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 <satur...@gmail.com 
> <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 android-...@googlegroups.com 
>> <javascript:>
>> To unsubscribe from this group, send email to
>> android-buildi...@googlegroups.com <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 android-buildi...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> On Mon, Dec 11, 2017 at 1:50 PM, Jacob Abrams <satur...@gmail.com 
> <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 android-...@googlegroups.com 
>> <javascript:>
>> To unsubscribe from this group, send email to
>> android-buildi...@googlegroups.com <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 android-buildi...@googlegroups.com <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 android-building@googlegroups.com
To unsubscribe from this group, send email to
android-building+unsubscr...@googlegroups.com
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 android-building+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to