Gaia/Build/NewBuildSystem: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1: Line 1:
= Overview =
= Overview =


After surveying, we decide to split build system into 2 steps: configure step and build step. For detailed information, please visit change proposal in dev-gaia [https://groups.google.com/forum/#!topic/mozilla.dev.gaia/rnvefXH8cng Update on Gaia build changes: A configure step, and Make v.s. Gulp].
After surveying, we decide to split build system into 2 steps: configure step and build step [https://gecko.readthedocs.org/en/latest/build/buildsystem/build-overview.html]. For detailed information, please visit change proposal in dev-gaia [https://groups.google.com/forum/#!topic/mozilla.dev.gaia/rnvefXH8cng Update on Gaia build changes: A configure step, and Make v.s. Gulp].


Our goal is to fasten incremental build and clobber build and easier to customize and manage new/current building step.
Our goal is to fasten incremental build and clobber build and easier to customize and manage new/current building step.
All of these terminologies can be referred to Gecko build system document [https://gecko.readthedocs.org/en/latest/build/buildsystem/glossary.html Glossary].


= Plan =
= Plan =
Line 10: Line 12:
** George (MoCoTPE) (irc #gaia: gduan)
** George (MoCoTPE) (irc #gaia: gduan)


* '''Total expected schedule:''' 12 - 15 weeks
* '''Total expected schedule:''' 10 - 12 weeks


== Milestone 1 ==
== Milestone 1 ==
Line 25: Line 27:
== Milestone 2 ==
== Milestone 2 ==


After initial landing step being done, we should abandon GNU make's PHONY targets as many as possible, so we could have a faster build by taking the advantage of GNU make's incremental build. The configure.js should be able to connect with different build back-end. In order to achieve this aim, we eventually come out a new phase - config.status for preparing the next step (replacing build back-end). The idea of config.status is charged with the task of tell back-end tool how to build the tree which includes scanning the build system definition and constructing a DAG data structure for representing task dependency and supporting parallel build natively. It means config.status will be generated by configure.js and output a build-file for back-end consumption (e.g. a `make` back-end will write a `Makefile`).
After initial landing step being done, we should abandon GNU make's PHONY targets as many as possible, so we could have a faster build by taking the advantage of GNU make's incremental build. The configure.js should be able to connect with different build back-end. In order to achieve this aim, we eventually come out a new phase - config.status [https://gecko.readthedocs.org/en/latest/build/buildsystem/build-overview.html#phase-2-build-backend-preparation-and-the-build-definition] for preparing the next step (replacing build back-end). The idea of config.status is charged with the task of tell back-end tool how to build the tree which includes scanning the build system definition and constructing a DAG data structure for representing task dependency and supporting parallel build natively. It means config.status will be generated by configure.js and output a build-file for back-end consumption (e.g. a `make` back-end will write a `Makefile`).


* '''Deliverable:'''  Abandon GNU make's PHONY targets as many as possible to speed up incremental build and implement config.status phase.
* '''Deliverable:'''  Abandon GNU make's PHONY targets as many as possible to speed up incremental build and implement config.status phase.
Confirmed users
429

edits