Commit b28856f
Bump to mxe/xamarin/a926b16d (#919)
Add commit SHA1 to `$(AndroidMxeInstallPrefix)`, so that we can
revert mxe to an earlier version.
Most of the current "do not rebuild DEPENDENCY" logic is
"forward-only": it only works properly if you go *forward* in time,
not backwards in time.
For example, consider the `ForceBuild` target in
`build-tools/mono-runtimes/mono-runtimes.targets`: if the HEAD commit
within `external/mono` moves "backward" so that the resulting
timestamp of `autogen.sh` is *older* than e.g.
`bin\$(Configuration)\bcl-tests\bcl-tests.zip`, re-running the
`ForceBuild` target won't do anything.
`external/mono` and `mono-runtimes` are forward-only.
Usually this is considered acceptable. If it's truly a problem, nuke
the `bin` directory and rebuild.
"Forward-only" behavior is *not* always acceptable.
Case in point: `external/mxe`. Building MXE takes a significant
amount of time -- roughly 10+ minutes -- so we *cache* the MXE
toolchain into `$(AndroidMxeInstallPrefix)` -- which defaulted to
`$HOME/android-toolchain/mxe` -- and only rebuild the cached MXE
when `external/mxe` changes.
All well and good...except when MXE *cannot* be built *at all*.
Case in point: [MXE couldn't be built with Xcode 8.3][mxe1744].
We didn't notice this for a long period of time, because our Jenkins
machines are fairly stable; they built and cached MXE under
Xcode 8.1, and never had to rebuild MXE again.
[mxe1744]: mxe/mxe#1744
The only reason we noticed is because some developers tried to build
MXE on new machines, with newer Xcode versions, and MXE didn't build.
This raises an interesting conundrum: for *cached* resources such
as MXE, it is *extremely* important to be able to *revert* to a
"known good" version. "Forward only" behavior is at odds with this;
you *can't* revert to a "known good" version, because it may have
been replaced!
Bump to mxe/xamarin/a926b16d, as this version *can* be built under
Xcode 9. (If we're lucky, it will *also* be able to build an updated
commit of `external/libzip`…)
Additionally, alter the semantics of `$(AndroidMxeInstallPrefix)` to
*require* that it *ends with* the abbreviated commit hash of the
`external/mxe` commit; in this commit, `$(AndroidMxeInstallPrefix)`
is `$HOME/android-toolchain/mxe-a926b16d`.
In particular, this allows us to *revert*: bumping `external/mxe`
will build MXE into a new, *unique*, directory, which means that any
previously built directory will not be modified. This in turn allows
us to "revert" the patch to use the previous MXE, if necessary.
The updated MXE now includes a few more "native" plugins in
`plugins/native/$(OS_SHORT_NAME)`. This caused issues on macOS where
the `patch` that MXE built ran into a problem because it relied on
newer APIs not available in older versions of macOS.
Fix this by disabling building the native plugins and instead rely on
the system ones by overriding `$(OS_SHORT_NAME)`.
[This mirrors what MXE is doing on Travis][travis].
[travis]: https://github.com/mxe/mxe/blob/16acc77a3d45425d5a7e11d8b2511fc5a28dd56f/.travis.yml#L61 parent b529d17 commit b28856f
File tree
4 files changed
+16
-5
lines changed- build-tools/android-toolchain
- external
- src/monodroid
4 files changed
+16
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
135 | 136 | | |
136 | 137 | | |
137 | 138 | | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
138 | 149 | | |
139 | 150 | | |
140 | | - | |
| 151 | + | |
141 | 152 | | |
142 | 153 | | |
143 | 154 | | |
144 | 155 | | |
145 | | - | |
| 156 | + | |
146 | 157 | | |
147 | 158 | | |
148 | 159 | | |
| |||
Submodule mxe updated 1059 files
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
0 commit comments