Please visit new build system plan  for detail information. Configure.js should be able to decide whether to regenerate all.mk (a dynamic generated Makefile from configure.js) by checking build definitions and scanning changed files.  https://wiki.mozilla.org/Gaia/Build/NewBuildSystem
WIP: https://github.com/cctuan/gaia/tree/1154583 I will add a configureDecider, and let dev to add what env and file to be cached, and return true if the current file or env is different than the cache.
This module needs to remove clean-stage-app step, so that we can skip some steps by comparing the cache list and also keep the profile of 2nd make is exactly the same from 1st make. However, we need to have a filter method for package to make sure we only package those files we need from build_stage instead of all of them.
Summarize the problems we have for current build system, 1. cache would not work, if there are two build steps trying to modify same file. ex: index.html would be copied to build_stage and cached in app's own build. It supposed to be ignored when 2nd build, however, webapp-optimize will also modify index.html in 1st build, so the timestamp would be updated and 2nd build would think index.html has been updated, so app's build would be not ignored. >>>> We'll only implement configDecider to app's own buildscript 2. too many unnecessary files in zip when changing config after remove clear-stage-app step, since we don't clear build_stage folder and all the folder would be zip to profile. >>>> We have no clear solution yet. Either using files filter in webapp-zip by config, or using api to manage ready-to-zip list and cross all build steps.
WIP, https://github.com/cctuan/gaia/commit/2722d3189efc2fa52f439f1111f1c6a4040b0f4a make APP=bluetooth 1st make 2.477s 2nd make 1.776s make APP=bluetooth 1st make 6.524s 2nd make 2.633s issue 2 in comment 3 is still unsolved.
We're no longer working on plan of incremental build system.