-
Notifications
You must be signed in to change notification settings - Fork 538
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[build] Expunge use of CONFIGURATIONS (#2325)
The xamarin-android Jenkins builds take awhile -- [over 5h 30min recently][0] -- in part because everything is built *twice*: for the Debug and Release configurations; see a16673d. (Note that this is roughly the fastest things can go, as this build didn't need to rebuild mono. Mono rebuilds are longer.) An unanswered question in a16673d is *why* `make jenkins` builds both Debug and Release configurations, *especially* considering that in 3821e82 the `$(CONFIGURATIONS)` variable was introduced so that the Debug configuration could be *excluded*. Why build both Debug and Release from `make jenkins`? Primarily because if we're going to support both configurations, we should ensure that they both *work*. The Debug configuration has the nice quality that native libraries are built with full debug information and optimizations *disabled*, which is useful for *debugging* and related development activities. The Release configuration is what the commercial products *actually ship with*. (Additionally, `make jenkins` builds both because it just seemed like a good idea at the time. One target to build all!) In retrospect, "one target to build all" is a bit of a mistake, as "all" isn't always needed (again, 3821e82). Additionally, building everything means builds take twice as long! Thus, an idea: what if `make jenkins` built only *one* configuration, and then we built *both* configurations *on separate machines*? Then each machine could build in (roughly) half the time. Expunge the `$(CONFIGURATIONS)` make variable from the repo. Instead, the Jenkins configuration will *separately* build each configuration as part of the build process, e.g. MSBUILD_AUTOPROVISION_ARGS="/p:AutoProvision=True /p:AutoProvisionUsesSudo=True /p:IgnoreMaxMonoVersion=False" make prepare-deps CONFIGURATION=Debug V=1 MSBUILD_ARGS="$MSBUILD_AUTOPROVISION_ARGS" make prepare-image-dependencies CONFIGURATION=Debug V=1 MSBUILD=msbuild || true make jenkins CONFIGURATION=Debug V=1 MSBUILD_ARGS="$MSBUILD_AUTOPROVISION_ARGS" make prepare-deps CONFIGURATION=Release V=1 MSBUILD_ARGS="$MSBUILD_AUTOPROVISION_ARGS" make jenkins CONFIGURATION=Release V=1 MSBUILD_ARGS="$MSBUILD_AUTOPROVISION_ARGS" make create-vsix CONFIGURATION=Debug V=1 || true make create-vsix CONFIGURATION=Release V=1 || true make all-tests CONFIGURATION=Debug V=1 make all-tests CONFIGURATION=Release V=1 We can then introduce separate Jenkins jobs which build *solely* the Debug or Release configurations, without further altering the `make jenkins` semantics. [0]: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1229/
- Loading branch information
Showing
4 changed files
with
49 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters