I'm also a long-time pre-8.0 developer who has added many packages and heavily customized the framework. How does one unconditionally make (-B) all targets within a given package using the new build system?
Thanks, -John On Tuesday, December 12, 2017 at 2:08:35 PM UTC-8, Colin Cross wrote: > > > > On Mon, Dec 11, 2017 at 1:50 PM, Jacob Abrams <[email protected] > <javascript:>> wrote: > >> Hello, >> >> I would like to voice protest over the AOSP build system switch from Make >> to Soong. Make is not a perfect tool but it is well documented and >> extremely stable. The introduction of ninja into AOSP was seamless and >> acceptable. However, migrating away from Make to a totally new tool with >> zero history is a serious set back. Why not instead choose Bazel, Tup, >> Gradle, Buck or simply stick with what works? >> >> I read the following statements from one of the developers of Soong build: >> >> > One of our goals for build health is to reduce the number of different >> > ways we build modules. Adding too many build flags makes it harder to >> > tell if a change will break the build, and hard to run tests. We >> > would much rather compiling everything the same on all devices, and >> > then determine which parts to use at runtime. >> >> It is unclear what is meant by "reduce the number of different ways we >> build modules.", nor is it clear what is meant by "We would much rather >> compiling everything the same on all devices". This seems to conflict with >> the example of LLVM where the build basically consists of completely custom >> go code: >> https://android.googlesource.com/platform/external/llvm/+/master/soong/llvm.go >> >> Clearly this custom go code does not reduce the number of different ways >> modules are built. >> > > Some teams have existing flows where they want to locally modify the way > they build, and we've supported those through the custom go code for those > modules. In general we still try to avoid them. > > >> I assume this is an attempt to improve build performance yet again, but >> it ends up wasting thousands of engineering hours across the globe. >> Engineers must figure out a new system that likely contains numerous bugs >> and could possibly be destined for the dustbin if it is not maintained >> properly or turns out to be inferior. If the goal is to improve build >> performance perhaps Google engineers could explore an under-the-hood >> contribution to Make itself? >> > > As Glenn pointed out, the purpose for Soong is not primarily performance, > it is correctness and reliability. Before Soong (and the conversion to > Ninja was part of Soong), incremental builds were completely unreliable, > requiring significant knowledge of the internals of the Android build for > platform developers to get anything done. Wiping the entire output > directory and rebuilding was common. Incremental builds are now reliable > enough to be used in our continuous build infrastructure. > > Debugging typos in Android.mk files was also very painful. LOCAL_CFALGS > instead of LOCAL_CFLAGS gets silently ignored, deleting a module that still > has users doesn't break incremental builds but breaks clean builds, > overwriting variables that are being used by other modules, subtle > differences between := and =, or ifdef blah and ifneq(,$(blah)). All of > these problems are fundamental to the way that Make works and can't be > fixed. > > We've explored various options with Make (for a while we had a modified > version of Make that would cache its build rules). The conversion to Ninja > (and all of the speed and reliability improvements that came with it) was > done by using Kati instead of Make, and we've continued to invest in new > features there. But most of the improvements have come from moving the > very complex build code out of the terrible Make language and into a high > level, maintainable, testable language. > > Android is mature; it deserves a mature build system. >> >> Jacob Abrams >> >> -- >> -- >> You received this message because you are subscribed to the "Android >> Building" mailing list. >> To post to this group, send email to [email protected] >> <javascript:> >> To unsubscribe from this group, send email to >> [email protected] <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/android-building?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "Android Building" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > On Mon, Dec 11, 2017 at 1:50 PM, Jacob Abrams <[email protected] > <javascript:>> wrote: > >> Hello, >> >> I would like to voice protest over the AOSP build system switch from Make >> to Soong. Make is not a perfect tool but it is well documented and >> extremely stable. The introduction of ninja into AOSP was seamless and >> acceptable. However, migrating away from Make to a totally new tool with >> zero history is a serious set back. Why not instead choose Bazel, Tup, >> Gradle, Buck or simply stick with what works? >> >> I read the following statements from one of the developers of Soong build: >> >> > One of our goals for build health is to reduce the number of different >> > ways we build modules. Adding too many build flags makes it harder to >> > tell if a change will break the build, and hard to run tests. We >> > would much rather compiling everything the same on all devices, and >> > then determine which parts to use at runtime. >> >> It is unclear what is meant by "reduce the number of different ways we >> build modules.", nor is it clear what is meant by "We would much rather >> compiling everything the same on all devices". This seems to conflict with >> the example of LLVM where the build basically consists of completely custom >> go code: >> https://android.googlesource.com/platform/external/llvm/+/master/soong/llvm.go >> >> Clearly this custom go code does not reduce the number of different ways >> modules are built. >> >> I assume this is an attempt to improve build performance yet again, but >> it ends up wasting thousands of engineering hours across the globe. >> Engineers must figure out a new system that likely contains numerous bugs >> and could possibly be destined for the dustbin if it is not maintained >> properly or turns out to be inferior. If the goal is to improve build >> performance perhaps Google engineers could explore an under-the-hood >> contribution to Make itself? >> >> Android is mature; it deserves a mature build system. >> >> Jacob Abrams >> >> -- >> -- >> You received this message because you are subscribed to the "Android >> Building" mailing list. >> To post to this group, send email to [email protected] >> <javascript:> >> To unsubscribe from this group, send email to >> [email protected] <javascript:> >> For more options, visit this group at >> http://groups.google.com/group/android-building?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "Android Building" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- -- You received this message because you are subscribed to the "Android Building" mailing list. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-building?hl=en --- You received this message because you are subscribed to the Google Groups "Android Building" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
