During a build, we load product configuration three different times --
to dump some initial variables, when parsing the CleanSpec.mk files, and
again when we parse the Android.mk files.
The BoardConfig.mk find commands use -path, which isn't supported by the
Kati find optimizer, so we end up spending ~125ms in each of the above
cases (on my machine, internal master -- aosp is closer to 30ms).
Instead, do the search during the initial dumping of variables, and pass
in TARGET_DEVICE_DIR into the later runs, using that to load the
BoardConfig.mk file.
Bug: 78020936
Test: out/build-taimen.ninja is identical
Test: out/soong.log shows that we're not running these finds again
Change-Id: I6f186e1879aa362528b48b8a00be3f7a9f88bfc5
This saves ~300ms from get_build_var on our internal tree (1.3s ->
1.0s). On AOSP, it only saves ~60ms (0.60s -> 0.54s).
It's also ran during lunch, and twice during every build (though the
second time it was run with Kati's find emulator, which significantly
reduces the overhead).
Bug: 78020936
Test: diff out/.module_paths/AndroidProducts.mk.list with existing find
results
Change-Id: I195b2840854122e41275e24e886ca8c8cda13dac
find .... -name oem\*.prop
Kati can't emulate this command -- it can't currently handle backslashes
in the middle of an argument, only at the beginning or end. So this
falls back to actually calling find, which can take a few seconds if
you've got a large vendor tree. Just switch all of these over to quoted
arguments instead of escaping the *.
Bug: 78020936
Test: Check out/soong.log for timing info
Test: out/build-taimen.ninja is identical
Change-Id: Ifde75948f677ad95107d9419a462649024f544b8
Files in this partition aren't actually installed, so we don't need to
use the BUILD_PREBUILT logic for APKs.
Bug: 66960479
Test: try PRODUCT_COPY_FILES of an apk into system, errors
Test: try PRODUCT_COPY_FILES of an apk into system_other, accepted
Change-Id: Ie721d2b884c6badfbe0e46f55c265b770bed618b
* changes:
sdk lib name can be in LOCAL_[STATIC_]JAVA_LIBRARIES
java_sdk_library supports test as another API scope
Support LOCAL_SDK_LIBRARIES for "current" builds.
When an sdk lib name (a module defined with java_sdk_library{...}) is
listed in LOCAL_JAVA_LIBRARIES or LOCAL_STATIC_JAVA_LIBRARIES, the name
is translated to the stubs lib name of the sdk lib.
We have to support this at least until all existing references to sdk
libs are all correctly converted to LOCAL_SDK_LIBRARIES.
Bug: 77575606
Test: m -j
Change-Id: I8cff668afd6b5f265cc7ae6fe6f5fa36b76b8334
When a module built with LOCAL_SDK_VERSION := test_current, then
it is linked against test variant of the sdk stubs library.
Bug: 77575606
Test: m -j
Change-Id: I08ce120d8e4774722a95bfc4e200ad7d123abc70
Soong uses lists of proguard flags files from dependencies instead
of a single concatenated file. Allow Soong to pass the list to
make, which will concatenate it.
Move the check inside ifdef LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE
in case Soong exports an Android library with an empty
LOCAL_SOONG_EXPORT_PROGUARD_FLAGS.
Bug: 73724997
Test: m checkbuild
Change-Id: Ia8f229ec5f9fc99a23bd471dfa70c9de7316de94
Resolve these using the naming scheme from sdk_library.go, added
in I4a4ccf6e730e041703c63bb275d8860d0de96887.
Also re-write the LOCAL_SDK_VERSION logic, as it was becoming a
real mess.
Bug: 77575476
Test: With uiautomator in a follow-on CL
Change-Id: I11bd10c02df3d458a4ed6de90114e27fabe8d9e0
* changes:
Pass --dex-location when processing prebuilt profiles
Fix speed-profile compilation for prebuilds
Update profile rules to support binary profiles
The apk name does not match the install location at the stage we are
processing profiles. This causes the wrong profile key to be used in the
final profile which may generate an empty app image.
Test: m; flash, dumpsys dexopt and check for speed-profile
check that the app image is not empty
Bug: 78515726
(cherry picked from commit 60216615f4)
Merged-In: Ic5d71296583be71d96f0e7a2dd59753f1d23c350
Change-Id: Ieb7386701b631d53d452336d1ad22653e4daee42
We were testing the wrong variable when setting the dex2oat flags
Test: m; flash, dumpsys dexopt and check for speed-profile
Bug: 78515726
(cherry picked from commit 7d701355e9)
Merged-In: I57c0e11aab2e4879c3ba3b2851f356b5864f5da9
Change-Id: I2e2f9da1dc9ed71977ec1d698433674c731f78bc
Use full binary profiles instead or relying on text-based profiles. This
makes it easier to import actual profiles and do not require two rounds of
transformation.
Text based profiled probably didn't help too much anyway because if the
apps are updated the proguard names will change.
Modules are still free to define a text based profile using
LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING. This is used for frameworks jars.
Test: make
Bug: 73313191
(cherry picked from commit f99ab7580f)
Merged-In: Ifd23dde21559fbcd015020905052bc588e275356
Change-Id: I13c6b3891cbf1232f1f07d0a17f019257f7118e6
This reverts commit 2a40cc6996.
Reason for revert: Broke a bunch of builds, platform/system/tools/bpt must be missing from more manifests.
Change-Id: I4c367a1fec5c62c247544227e9d3b596227e31da
* changes:
Write combined bpt definition directly into META/partition-table.bpt
Support regenerating partition table with bpttool in sign_target_files_apks
Don't suppress stderr for 'avbtool make_vbmeta_image'
Include default Android Things AVB keys in otatools.zip
This file has been copied into a 'public' subdir. Use that, so that
the old file can be deleted. Also introduce a new macro to avoid
duplicating this path in a bunch of places.
Bug: 77525052
Test: m checkbuild
Change-Id: Ifcf59c6fb357769b2765e417c8dd56d2ad9b97aa
...instead of copying from IMAGES/partition-table.bpt during
sign_target_files_apks. This addresses a comment on go/oag/665565, but
is done as a separate change so that it can be cherry-picked later (or
not at all) to downstream branches to avoid breaking signing of existing
target-files zips.
Bug: 72837107
Test: Local sign_target_files_apks run of locally built target-files
Change-Id: Id14c859eefe075fc56b15869f2f21c570eb07e65
For Android Things targets (or any other target which has
BOARD_BPT_INPUT_FILES defined), add_img_to_target_files will generate a
partition-table.img using bpttool. It also adds the final combined .bpt
definition file into target-files in IMAGES/partition-table.bpt.
When we're signing using sign_target_files_apks, add_img_to_target_files
needs to regenerate the partition table, but META/misc_info.txt still
contains the original list of bpt input files from the build that aren't
available. This change extracts the final bpt from the input
target-files, adds it to META/ in the output target-files, and then
updates the board_bpt_input_files property to point to it.
Bug: 72837107
Test: Local sign_target_files_apks run of locally built target-files
Change-Id: Id79125208f31c78b1ac2079172f9c91a9203849b
Output is useful for debugging.
Bug: 72837107
Test: Local sign_target_files_apks run of locally built target-files
Change-Id: I5c27fcc86fa3a51080e0502eb8f5f01a40b033c3
Android Things has an extension on AVB and thus uses different test
keys, along with a public key metadata file. See external/avb/README.md.
Bug: 72837107
Test: Local sign_target_files_apks run of locally built target-files
Change-Id: I769e09a971b9b6b2c9cb0f3272f756b1857eb286
* See upstream status of lld for Mach-O at https://lld.llvm.org/AtomLLD.html
Bug: 73768157
Test: make checkbuild
Change-Id: I20330bd59cc8b3d0ed0fa08d3f1c2be7b8656849
This is needed for the system images of aosp_arm(64) products to
be used as their respective GSIs in P, and for also aosp_arm(64)
products to boot with the current GSIs.
Bug: 78255604
Test: Built and booted the following products to home screen
$ lunch aosp_arm-userdebug; m -j; emulator
$ lunch aosp_arm64-userdebug; m -j; emulator
# The system image, both userdebug and user builds, of
# aosp_arm64 could also boot to home screen and browse
# the network on a physical device.
Change-Id: I83b79fd4d4e6e522ee78c720fb8c5f6f67ee411b
Merged-In: I83b79fd4d4e6e522ee78c720fb8c5f6f67ee411b
(cherry picked from commit f71547079a)
Starting in P, all 32-bit and 64-bit architectures use 64-bit
binder interface. This is similar to ag/3576770 for x86.
Bug: 71861550
Test: the following products can boot to home screen successfully:
lunch aosp_arm-userdebug; m -j; emulator
lunch sdk_phone_armv7-userdebug; m -j; emulator
Change-Id: Ibe1f53a5798342555e2e84395a13b48d461f483d
Merged-In: Ibe1f53a5798342555e2e84395a13b48d461f483d
(cherry picked from commit 6f114c0110c466d2a117f3e531f9ea5170a121ee)
This is a first attempt to enable build system support to include
vndk_package automatically (if BOARD_VNDK_VERSION is set), so devices
don't need to add it via PRODUCT_PACKAGE manually.
Bug: b/67002788
Test: Booted on the x86 emulator and a physical device and checked
their /system/lib*/vndk-* directories for vndk_package libraries.
# The commands below are for the x86 emulator:
$ lunch aosp_x86_64-userdebug; m -j
Change-Id: Iea927b9535c7ee1b64ca130a4ac54f0fd8b3f758
Merged-In: Iea927b9535c7ee1b64ca130a4ac54f0fd8b3f758
(cherry picked from commit 5364f5a298)
This change modifies aosp_$arch product makefiles so their
system images can be closer to their respective GSIs.
The added contents in this CL are based on treble_common*.mk.
Contents specific to GSI are in aosp_$arch.mk.
Contents common to all devices are moved to full_base.mk.
Contents related to specific device are moved to device.mk.
BoardConfig related makefiles will be changed in another CL.
Bug: 70772101
Test: The following products can boot to home screen:
$ lunch aosp_x86-userdebug; m -j; emulator
$ lunch aosp_x86_64-userdebug; m -j; emulator
$ lunch aosp_arm-userdebug; m -j; emulator
$ lunch aosp_arm64-userdebug; m -j; emulator
Change-Id: I225a13dd74b3e748cc5d1705e1a453348b01d43f
Merged-In: I225a13dd74b3e748cc5d1705e1a453348b01d43f
(cherry picked from commit 164eed2e7d)
This CL separates the options into three groups (excluding the global
options provided via common.py).
- Non-A/B OTA specific options;
- A/B OTA specific options;
- Common options that apply to both.
It mostly reshuffles the lines, with minor change to "--verify" that
removes the obselete remounting behavior (which doesn't apply to
block-based OTA).
Hopefully this makes the expected behavior of some options less
confusing.
Test: `build/make/tools/releasetools/ota_from_target_files.py`
Change-Id: I194ea52c4f7d6a3c7f34531abbcf3fdc7b7f4fa8
This CL defaults the journal size to 0 for system images (i.e. system,
vendor, system_other, oem, product). We used to do this by explicitly
defining BOARD_{SYSTEM,VENDOR,OEM,PRODUCT}IMAGE_JOURNAL_SIZE to 0 in
device-specific BoardConfig. Targets can still specify a non-zero
journal size as needed.
With this CL, marlin/sailfish gets 32MB / 16MB free space back for
system and vendor respectively.
Bug: 75975085
Test: `m dist`. Check the journal size in the generated images.
Change-Id: Ib3185d07c49be2b4f0fac5fe17ec1a82093ba0c0
(cherry picked from commit 965542fe69)
Defaults the reserved blocks for root to 0% on read only partitions
(system, system_other, vendor, oem). It also adds support for
explicitly specifying the extfs reserved percentage via
BOARD_{SYSTEM,VENDOR,OEM,PRODUCT}IMAGE_EXTFS_RSV_PCT.
This eventually translates down to the -m option for mkfs.
Removing the reserved space can save at least 5% from the default.
dumpe2fs system:
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Bug: 75975085
Test: Build, verify reserved space is changed accordingly
Change-Id: I212d82741908b636db0d658a1c4847bbaadfd5ba
(cherry picked from commit 5ff758799c)