Commit Graph

58993 Commits

Author SHA1 Message Date
Jiyong Park 0b4fccb66d BUILD_BROKEN_DUP_SYSPROP as escape hatch for the new sysprop restriction
As the final step for the refactoring of sysprop configuration, this
change adds BUILD_BROKEN_DUP_SYSPROP which is the escape hatch for
the new restriction. When it is turned on, the new syntax `a ?= b`
collapses to the old syntax `a = b`, duplicated assignments are allowed,
and the dups are resolved following the legacy rule of preferring the
first.

This change also summarizes all the user-facing changes to the Change.md
file.

Lastly, post_process_prop.py is refactored to accept new argument
'--allow-dup' which when turned on allowes duplicated sysprops.

Bug: 117892318
Bug: 158735147
Test: atest --host post_process_prop_unittest

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: I7bdfffd47d50aad66a78e28a30c3dad7ebac080c
(cherry picked from commit b302cdf6a4)
Change-Id: I7bdfffd47d50aad66a78e28a30c3dad7ebac080c
2020-06-30 18:44:40 +09:00
Jiyong Park 85471ed82e pm.dexopt.* props in runtime_libart.mk becomes optional
The mk file is designed to provide safe default values which can be
overridden by target-specific mk files. Previously it was difficult to
correctly configure the mk files because the final prop value that
is baked in the system/build.prop is highly dependent (and sensitive as
well) to the mk file inheritance order which is very difficult (and
non-intuitive) to follow.

I9c073a21c8257987cf2378012cadaeeeb698a4fb is an attempt to make it much
easier and intuitive. Specifically, the new `a ?= b` syntax makes the
assignment optional, which means it is used only when there is no
non-optional assignment for the same prop regardless of the relative
ordering among them. In addition, the change prohibits having multiple
non-optional prop assignments for the same prop name.

pm.dex.* prop in runtime_libart.mk are now set using the `a ?= b` syntax
to explicitly mark that they provide default values.

Bug: 117892318
Bug: 158735147
Test: m

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: I044486d313d699607cd54222ae34d9eae24762b9
(cherry picked from commit bca4ea477a)
Change-Id: I044486d313d699607cd54222ae34d9eae24762b9
2020-06-30 18:44:30 +09:00
Jiyong Park 19746f4686 Some properties are set as optional
Some properties that are designed to provide a safe default value are
explicitly set as optional using the 'a ?= b' syntax.

Bug: 117892318
Bug: 158735147
Test: m

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: Ie6a50ab7e0bcb210e282bc18e8c1daf412903f90
(cherry picked from commit dfb3937ce4)
Change-Id: Ie6a50ab7e0bcb210e282bc18e8c1daf412903f90
2020-06-30 18:44:24 +09:00
Jiyong Park 8d521ec2c8 ro.zygote in base_system.mk is optional
The setting of ro.zygote in base_system.mk is optional, which means the
value can be overriden by other (probably more specific) mk files.

Bug: 117892318
Bug: 158735147
Test: atest --host post_process_prop_unittest

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: Ia7a67c0a04fad343d6591417f40dd4b9ddadc5e4
(cherry picked from commit b1261aac33)
Change-Id: Ia7a67c0a04fad343d6591417f40dd4b9ddadc5e4
2020-06-30 18:44:17 +09:00
Jiyong Park 8b266f16a9 Don't inherit tablet-dalvik-heap for GSI and emulator
GSI and emulator should not be specialized for tablet.

This is also to avoid the expected sysprop conflict after
I9c073a21c8257987cf2378012cadaeeeb698a4fb gets in. With the change,
duplicate assignments of a sysprop is prohibited. We currently have the
duplication due to the following hierarchy chain:

aosp_arm64.mk
 -> emulator_vendor.mk -> goldfish/vendor.mk -> phone-xhdpi-2048-dalvik-heap.mk
 -> generic_arm64/device.mk -> tablet-dalvik-heap.mk

Many of the dalvik.vm.* properties are duplicated between phone-*-
dalvik-heap.mk and tablet-dalvik-heap.mk files.

Bug: 117892318
Bug: 158735147
Test: atest --host post_process_prop_unittest

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: I4d1e2f819fe688a4a85e58387b6af58d603399d3
(cherry picked from commit 9f2f6dd9c9)
Change-Id: I4d1e2f819fe688a4a85e58387b6af58d603399d3
2020-06-30 18:44:11 +09:00
Jiyong Park d721e870bc Support optional prop assignments
This CL adds a number of changes to make the assignment of system
properties to be less confusing.

1. Added `a ?= b` syntax, which is called optional prop assignments. The
prop `a` gets the value `b` only when there is no non-optional prop
assignment for `a` such as `a = c`. This is useful for props that
provide some reasonable default values as fallback.

2. With the introduction of the optional prop assignment syntax,
duplicated non-optional assignments is prohibited; e.g., the follwing
now triggers a build-time error:

a = b
a = c

, but the following doesn't:

a ?= b
a = c

Note that the textual order between the optional and non-optional
assignments doesn't matter. The non-optional assignment eclipses the
optional assignment even when the former appears 'before' the latter.

a = c
a ?= b

In the above, `a` gets the value `c`

When there are multiple optional assignments without a non-optional
assignments as shown below, the last one wins:

a ?= b
a ?= c

`a` becomes `c`. Specifically, the former assignment is commented out
and the latter is converted to a non-optional assignment.

3. post_process_props.py is modified so that when a prop assignment is
deleted, changed, or added, the changes are recorded as comments. This
is to aid debugging. Previously, it was often difficult to find out why
a certain sysprop assignment is missing or is added.

4. post_process_prop.py now has a unittest

Bug: 117892318
Bug: 158735147
Test: atest --host post_process_prop_unittest

Exempt-From-Owner-Approval: cherry-pick from master

Merged-In: I9c073a21c8257987cf2378012cadaeeeb698a4fb
(cherry picked from commit 7aeb8de74e)
Change-Id: I9c073a21c8257987cf2378012cadaeeeb698a4fb
2020-06-30 18:44:01 +09:00
Dan Willemsen 4d1284c0b7 Merge "Remove empty new-space in dynamic_partition_list and super_$(group)_partition_list" 2020-06-27 22:10:58 +00:00
Treehugger Robot 1e6cc9fc30 Merge "Mark android_app_set modules PRESIGNED." 2020-06-27 01:01:40 +00:00
Jaewoong Jung ddae589b95 Mark android_app_set modules PRESIGNED.
Test: m apkcerts-list
Fixes: 159921591
Merged-In: Ie83a05be0d71280644843eddffdbea6bcb429c74
Change-Id: Ie83a05be0d71280644843eddffdbea6bcb429c74
2020-06-26 16:10:49 -07:00
Luca Stefani c158e421ec Remove empty new-space in dynamic_partition_list and super_$(group)_partition_list
* As a side product .strip() calls in releasetools are redunant,
  but since these scripts are also used out of tree we can't
  remove them to guarantee compatibility

Test: m dist
Change-Id: I5c513a4654e293c3d4eab98c8759ea094015fab1
2020-06-26 19:52:52 +02:00
Tianjie Xu b829269aa1 Merge "Rename the boot image for avb validation" 2020-06-26 17:35:54 +00:00
Ulyana Trafimovich 43774f74c3 Merge "Move construct_context.sh from Make to Soong." 2020-06-26 08:46:58 +00:00
Tianjie 5ec1a7a66a Rename the boot image for avb validation
Starting from http://go/aog/1328118, we chained the 1st GKI
boot image into vbmeta. However, this fails avb validation;
because the avbtool constructs the image path based by using
"partition name + ext".

This cl works around the issue by renaming boot-5.4.img to
boot.img, so avbtool can find the image correctly.

Bug: 159656873
Test: run validate target file
Change-Id: I577226596e139e5b5f3e6ca3c28ced02431ca392
2020-06-25 23:09:48 -07:00
Treehugger Robot bfe947b5ce Merge "depmod: pair in a modules.load.charger on BOARD_VENDOR_CHARGER_KERNEL_MODULES_LOAD" 2020-06-25 19:23:39 +00:00
Mark Salyzyn 46a9c028b8 depmod: pair in a modules.load.charger on BOARD_VENDOR_CHARGER_KERNEL_MODULES_LOAD
If the BoardConfig defined BOARD_VENDOR_KERNEL_MODULES_LOAD and
BOARD_VENDOR_CHARGER_KERNEL_MODULES_LOAD, generate both a
modules.load and modules.load.charger respectively on
/vendor/lib/modules.

Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug: 159424228
Bug: 151950334
Test: build, confirm, change to charger mode, confirm set of modules loads
Change-Id: I55677ed74d80ff3909fe8cbe26e6766f9b5283d5
2020-06-25 08:57:36 -07:00
Ulya Trafimovich 5a7defdab1 Move construct_context.sh from Make to Soong.
This script belongs with other manifest-related scripts, and the future
plan is to rewrite it in Python and share common functionality with
other scripts.

Test: lunch aosp_cf_x86_phone-userdebug && m
Bug: 132357300
Change-Id: I4b90129e5023ca1a2c818fc160c34b0b7da943ef
2020-06-25 14:48:08 +01:00
Tianjie Xu be46f482e0 Merge "Add lz4 to otatools" 2020-06-24 23:38:49 +00:00
Colin Cross e1ab4cb610 Merge "Use inclusive language in build/make part 2" 2020-06-24 21:58:46 +00:00
Kelvin Zhang c8b4784cb9 Merge "Fix lint errors in ota_from_target_files script" 2020-06-24 19:17:35 +00:00
Colin Cross d1cbfeaa3a Use inclusive language in build/make part 2
Test: m checkbuild
Bug: 158889297
Change-Id: I63bac680cc63a8564f35ae85dda1a0b09c9fd541
2020-06-24 12:03:08 -07:00
Tianjie 3031c29905 Add lz4 to otatools
A call to lz4 was added in http://go/aog/1329115. But the binary
isn't added to otatools, leading to a signing failure.

Bug: 159656873
Test: build otatools
Change-Id: I9cab00f36ce3c39cc174b4c9feffdf360f0364ef
2020-06-24 11:20:36 -07:00
Kelvin Zhang 0876c410ad Fix lint errors in ota_from_target_files script
Only changes code styles, should be No-op to functionality

Test: Run unit tests
Bug: 159723838
Change-Id: Icf6146eb0d6b3fb66478709c0edf55bce54db68f
2020-06-24 09:21:35 -04:00
Roland Levillain 4a203a6326 Merge "Warn about the use of `COVERAGE_PATHS` and `COVERAGE_EXCLUDE_PATHS`." 2020-06-24 10:16:03 +00:00
Colin Cross 5c0acab3e2 Merge "Rename Native_coverage to GcovCoverage in Soong" 2020-06-23 03:06:53 +00:00
Treehugger Robot 8eba18759b Merge "Remove vts10 dependencies" 2020-06-23 02:11:30 +00:00
Ryan Prichard b636b0cfb8 Merge "Unlist libunwind as a critical component" 2020-06-22 21:17:07 +00:00
J. Avila dbbd970d18 Merge "Switch to using llvm-strip for modules" 2020-06-22 15:19:26 +00:00
Ryan Prichard 7146b7cd46 Unlist libunwind as a critical component
Virtually nothing uses libunwind, and no one should start using it, so
it's unlikely to be critical.

(Code should use libunwindstack.so to collect backtraces, and it should
use libc.so's _Unwind_* APIs for C++ exception handling unwinding.)

Test: build Android
Change-Id: I81882a4634ff4d397abe8a7cf5ff15a22a3eed2f
Merged-In: I81882a4634ff4d397abe8a7cf5ff15a22a3eed2f
(cherry picked from commit 9355aeba79)
2020-06-19 22:38:42 +00:00
Chris Gross e08e40947b Merge "Use BUILD_*_IMAGE flags in add_img_to_target_files." 2020-06-19 22:32:37 +00:00
J. Avila f7586025a2 Switch to using llvm-strip for modules
The gcc tools are deprecated; replace with the llvm equivalent.

Bug: 158484106
Change-Id: I9c3717bde281667eec82cc21dc63dc7fd5592a46
2020-06-19 21:32:45 +00:00
Treehugger Robot 5dda5caeb9 Merge "adjust vendor ramdisk file extension based on compression" 2020-06-19 06:32:45 +00:00
Steve Muckle 414dbe15ab adjust vendor ramdisk file extension based on compression
The extension for the generated vendor ramdisk should be updated based
on the compression scheme used.

Bug: 158433703
Change-Id: I25fff0b8a7879f6aa6d6fe2fce9f5a53f90eb636
2020-06-18 21:38:35 -07:00
Paul Duffin e5fc8fdf5e Merge "Fail check-boot-jars if boot jar contains 0 .class files" 2020-06-18 19:35:22 +00:00
Sophie Zheng 34fe2651ed Merge "NDK api code coverage" 2020-06-18 19:26:00 +00:00
Treehugger Robot efc6dfb703 Merge "Remove use of metalava compatible output" 2020-06-18 17:57:05 +00:00
Paul Duffin 70dd47f0df Fail check-boot-jars if boot jar contains 0 .class files
Protect against an invalid boot jar, e.g. one containing .dex files is
used instead of .class files.

Test: add a prebuilt for framework-tethering
      Run `m check-boot-jars` with the first fix from
	  https://r.android.com/1341756 and the build fails due to no
	  .class files because a dex jar is used.
	  Run `m check-boot-jars` with all fixeds from
	  https://r.android.com/1341756 and the build works.
Bug: 158304459
Bug: 159112414
Merged-In: I0e8ebd318312949bc58ba7a5c89f9e265b8bedf2
Change-Id: I0e8ebd318312949bc58ba7a5c89f9e265b8bedf2
(cherry picked from 92d41de8f2)
2020-06-18 14:17:57 +00:00
Treehugger Robot 7270150164 Merge "Mark jni libs as REQUIRED by their app" 2020-06-18 07:12:33 +00:00
sophiez cb00590712 NDK api code coverage
Update parsed NDK api xml file directory name.

Test: m ndk
Forrest test build pass: http://shortn/_E5mhRtD4zW

Change-Id: Ic20780d969e33103c45953c9cdd81efe4262b4a9
2020-06-17 23:01:21 +00:00
Martin Stjernholm 2c38eb2537 Merge "Propagate TARGET_BUILD_APPS to Soong." 2020-06-17 17:31:24 +00:00
Sophie Zheng b5bfbab22b Merge "Revert "Revert "Copy generated xml file for NDK api coverage to dist when CLANG_COVERAGE flag set.""" 2020-06-17 17:11:32 +00:00
Treehugger Robot 03db4fbbb7 Merge "Skip mount /oem on GSI" 2020-06-17 08:21:23 +00:00
Martin Stjernholm 74920e6e43 Propagate TARGET_BUILD_APPS to Soong.
Used to select SDK variants of native libraries when building unbundled
apps only. This allows unbundled modules to access the platform
variants (and typically their versioned APEX stubs).

Test: m (on AOSP master)
Test: TH (including ub-launcher3-master)
Bug: 157549171
Change-Id: I74f0bcebe8b66b81b2c80e9d448f5d24dc9ab991
2020-06-17 04:15:00 +01:00
Treehugger Robot 0c263fd271 Merge "Refactor how MODULES-IN-* is defined" 2020-06-17 01:26:20 +00:00
Colin Cross 74f121d18f Rename Native_coverage to GcovCoverage in Soong
Pass the NATIVE_COVERAGE Make variable to Soong as the more accurate
GcovCoverage.  Also remove NATIVE_LINE_COVERAGE, it doesn't do anything
different from NATIVE_COVERAGE, and NATIVE_COVERAGE is always set when
NATIVE_LINE_COVERAGE is set.

Bug: 159059537
Test: m checkbuild
Change-Id: Ib26a0e29f09b87400fd8bc41d2c06a4a8a397a19
2020-06-16 18:01:52 -07:00
Dan Willemsen 343caec30c Refactor how MODULES-IN-* is defined
Unlike the previous performance patches, this does change the ninja
file, shrinking build-aosp_crosshatch.ninja on aosp-master from 393MB to
387MB, while reducing kati runtime from 28.6s to 27.7s.

Previously, MODULES-IN-art would depend on every target defined under
art/***. After this change, it only depends on the modules names that
were directly defined under it, and depends on the MODULES-IN-art-*
for its subfolders.

Bug: 158488548
Test: mmma system/core/adb
Test: mmma system/core
Change-Id: Idfe80f707738faae4777e0d6dc9fd08014775696
2020-06-16 15:35:37 -07:00
Roland Levillain bececf9e92 Warn about the use of `COVERAGE_PATHS` and `COVERAGE_EXCLUDE_PATHS`.
The use of environment variables `COVERAGE_PATHS` and
`COVERAGE_EXCLUDE_PATHS` has been deprecated since they have been
replaced by `NATIVE_COVERAGE_PATHS` and
`NATIVE_COVERAGE_EXCLUDE_PATHS` (resp.).

Test: m nothing
Bug: 158212027
Change-Id: I1c48dc4da15c630201168cce34edb920960c93d4
2020-06-16 11:27:34 +01:00
Anton Hansson c5fa7396ba Mark jni libs as REQUIRED by their app
This makes the dependencies of the jni lib .so appear in
product_target_FILES. Previously, only the jni lib .so
itself appeared, as an effect of being added to the
INSTALLED files of the app.

Bug: 129323707
Test: compare the output between `m dump-files` and installed-files.txt
Test: noop in terms of build artifacts
Change-Id: Ie391bb45ad7758e51368cabb1ecba5caeae2f09c
2020-06-16 16:13:03 +08:00
Treehugger Robot 397972fa6a Merge "Include image descriptor of only the first boot image in vbmeta" 2020-06-16 00:05:28 +00:00
Sophie Zheng 970d5925bd Revert "Revert "Copy generated xml file for NDK api coverage to dist when CLANG_COVERAGE flag set.""
This reverts commit dd9467aa23.

Reason for revert: Fix to the breakage merged in https://android-review.googlesource.com/c/platform/build/soong/+/1332082.

Forest test build pass: http://shortn/_AWiWymhTjF

Change-Id: Ie47b84c51e85c8d372c5ee49963d671ff08ef91a
2020-06-15 20:42:37 +00:00
Roland Levillain b07814dffd Merge "Introduce product variables to select Java code coverage paths in Make." 2020-06-15 18:41:03 +00:00