Single vendor can support multiple skus with different
capabilities. Add support to define and build sku
based device manifests.
Specify DEVICE manifests in BoardConfig.mk as below.
# installed to /vendor/etc/vintf/manifest_{sku}.xml
DEVICE_MANIFEST_SKUS := sku1 sku2 sku3
DEVICE_MANIFEST_SKU1_FILE := device/foo/bar/manifest_sku1.xml
DEVICE_MANIFEST_SKU2_FILE := device/foo/bar/manifest_sku2.xml
DEVICE_MANIFEST_SKU3_FILE := device/foo/bar/manifest_sku3.xml
Bug: 148601741
Change-Id: Id57d4ad21b0d3edf8d60d07446b6b806c1df20ab
Merged-In: Id57d4ad21b0d3edf8d60d07446b6b806c1df20ab
Single vendor can support multiple skus with different
capabilities. Add support to define and build sku
based device manifests.
Specify DEVICE manifests in BoardConfig.mk as below.
# installed to /vendor/etc/vintf/manifest_{sku}.xml
DEVICE_MANIFEST_SKUS := sku1 sku2 sku3
DEVICE_MANIFEST_SKU1_FILE := device/foo/bar/manifest_sku1.xml
DEVICE_MANIFEST_SKU2_FILE := device/foo/bar/manifest_sku2.xml
DEVICE_MANIFEST_SKU3_FILE := device/foo/bar/manifest_sku3.xml
Bug: 148601741
Change-Id: Id57d4ad21b0d3edf8d60d07446b6b806c1df20ab
The GKI boot.img should be generated alongside the GSI. To make this
possible, define a flag (TARGET_NO_VENDOR_BOOT) that can be used to
disable the generation of the vendor_boot image.
Bug: 138323550
Change-Id: I91181853b26815e68a2fa2216b68579780d034dc
GSI targets require enabling chain partition signing, which put the
GSI signing in system.ing directly instead of in vbmeta.img.
Some GSI targets inherit from BoardConfigGsiCommon.mk only, ex.
gsi_arm64-user, do not enable chain partition signing. The patch
add these settings back.
On the other hand, the emulator makefiles still requires the
settings at this time. Hence, we keep these settings in
BoardConfigEmuCommon.mk.
Bug: 150179516
Test: make gsi_arm64-user
Test: make aosp_arm64-user
Change-Id: Id188e4c6a31ce0cf9b134ebae36cbd5bfae19942
Merged-In: Id188e4c6a31ce0cf9b134ebae36cbd5bfae19942
(cherry picked from commit f77e364de0)
GSI targets require enabling chain partition signing, which put the
GSI signing in system.ing directly instead of in vbmeta.img.
Some GSI targets inherit from BoardConfigGsiCommon.mk only, ex.
gsi_arm64-user, do not enable chain partition signing. The patch
add these settings back.
On the other hand, the emulator makefiles still requires the
settings at this time. Hence, we keep these settings in
BoardConfigEmuCommon.mk.
Bug: 150179516
Test: make gsi_arm64-user
Test: make aosp_arm64-user
Change-Id: Id188e4c6a31ce0cf9b134ebae36cbd5bfae19942
These options are not used anymore.
Bug: 119800099
Exempt-From-Owner-Approval: Rebase after conflict
Test: m
Change-Id: I1057a6fc420b45e326ec7744b6df159f950ad853
Legacy GSIs named with the suffix _ab, ex. aosp_arm64_ab.
It contain some backward-compatible configurations for
devices upgraded from O/O-MR1.
The patch also addes legacy_gsi_release.mk for the special
configuretions of Legacy GSI.
Bug: 144742991
Test: boot aosp_arm64_ab-userdebug on a walleye P (with SPL)
Test: boot aosp_arm64_ab-userdebug on a walleye Q (with SPL)
Change-Id: I61c9e74abcc921ab2cb50bf6f6dce1097a8d6c77
This was used by BUILT_SYSTEM_MATRIX and BUILT_ASSEMBLED_VENDOR_MANIFEST, but they
are deleted now.
Test: builds
Change-Id: Ie7e242dce9c6511b90fcf06ae4b6926b230b9873
Building device_manifest.xml or device_compatibility_matrix.xml only
builds vendor manifest / matrices, but not all device manifest /
matrices (e.g. vintf_fragments, ODM manifest, etc.). Make the name more
accurate.
Test: m check-vintf-all
Change-Id: Ib017507c421355263d53a9e5b357f169c77da36d
Remove redundant TARGET_FLATTEN_APEX lines from mainline board configs.
Remove redundant "inherit updatable_apex.mk" lines from
mainline_system_$arch makefiles.
mainline_system.mk now always install APEX into /system partition.
Products who need flattened APEXes would have their flattened APEXes
installed into /system_ext.
Test: Build mainline_system_arm64 and validate noop
Change-Id: I9ee4af529a4bd554cb8707cfc260d6b912fd5fff
Since /persist is a SoC specfic symlink, it must not be included in
the root directory. For this reason, we already moved the directory
under /mnt/vendor. However, there are still many modules that are
using the old path /persist.
Until we clear all these violations, we need to have the symlink in
the root directory.
Bug: 143732851
Test: build and check boot and basic functions
Change-Id: Iaee28ba29f79f1c286e090f97173e3196d2fc823
The build system default was changed to not support apex, but
we want the mainline device to enable it.
Test: make mainline_system
Merged-In: I9f29e8354acffb1856dfd8a173b80a3f9324630c
Change-Id: I9f29e8354acffb1856dfd8a173b80a3f9324630c
The Legacy GSI is used on O/O-MR1 devices.
Do not need to support anymore. Phase out it.
Bug: 135977699
Test: none
Change-Id: I48b563a3aceca3c926e744165eb1dd88eff7a3d2
Merged-In: I48b563a3aceca3c926e744165eb1dd88eff7a3d2
After applying the patch, the contents in system/product align
to the mainline_system/aosp_product.
aosp_x86_arm is not releaseded for GSI. The patch also inherits
from BoardConfigMainlineCommon.mk instead of
BoardConfigGsiCommon.mk. But keeps output system_ext and product
files to /system/system_ext/ and /system/product/.
Bug: 136616665
Test: Compare the product out folder with/without the patch
Change-Id: I2aefbd2d3e71e26219508e53161fa8a3cc2fd652
We're now adding a core CSI system.img that is common across different
targets. So GSI-specific things should be moved to /system_ext.
Also renaming various generic*/system.prop to generic*/system_ext.prop.
This is to put the customization into /system_ext/build.prop instead of
/system/build.prop.
Bug: 137711197
Test: boot a GSI on crosshatch, and checks the value of those properties
Change-Id: Id344124280d5f4a6c10d390a9e8a4a50cc7f28fb
All the targets that inherit mainline seem to use metadata_partition,
So turn on BOARD_USES_METADATA_PARTITION
Bug: 137920314
Bug: 139731063
Test: m && check if there is /metadata
Change-Id: I17cfb5faf76a3c3d6ce1be594274ea58ebc1d1ae
This reverts commit ef7e3f2623.
The configuration affects GSI to have separate partitions for product
and system_ext which was not intended.
Bug: 138742524
Bug: 138382074
Test: emulator; check boot
Change-Id: Ie621d6b49f22ee2775adf1c1497e812f840f8ba7
Build product and system_ext image and add them to super partition.
Bug: 138382074
Test: boot emulator and check system_ext partition mounted
Change-Id: Ifa67bd6ad475ac5912e8f919c7a771c9958bd5c2
Merged-In: Ifa67bd6ad475ac5912e8f919c7a771c9958bd5c2
Build product and system_ext image and add them to super partition.
Bug: 138382074
Test: boot emulator and check system_ext partition mounted
Change-Id: Ifa67bd6ad475ac5912e8f919c7a771c9958bd5c2
Merged-In: Ifa67bd6ad475ac5912e8f919c7a771c9958bd5c2
(cherry picked from commit 28843c3e32)
These LMK properties are product properties. The configuration will
be absent when GSI is installed as GSI doesn't mount the product
partition. Without these settings, some CTS test cases could
fail due to an aggressive LMK.
The patch puts these properties in GSI as default values.
Bug: 136212765
Bug: 134460917
Test: `run cts -m CtsFileSystemTestCases`, all pass
Change-Id: I6fde8db51debcb9bb269aece3a3e4c7e5bb991f6
Merged-In: I6fde8db51debcb9bb269aece3a3e4c7e5bb991f6
(cherry picked from commit 9547929af4)
mainline_system.mk is inherited by not only Pixels but also products
like GSI and sdk_gphone where kernel isn't capable of supporting
updatable APEX.
Stop inheriting updatable_apex.mk from mainline_system.mk and let each
product to decide whether or not to inherit updatable_apex.mk.
Also, TARGET_FLATTEN_APEX is not set to true for GSI as it is the
default setting.
Bug: 132664085
Test: choosecombo 1 aosp_arm64 userdebug; get_build_var
TARGET_FLATTEN_APEX shows true
choosecombo 1 sdk_gphone userdebug; get_build_var TARGET_FLATTEN_APEX
shows true
Change-Id: I3c4e1e4b2bbebd675904d148dd18acb57ecbdfe9
Merged-In: I3c4e1e4b2bbebd675904d148dd18acb57ecbdfe9
(cherry picked from commit 5fd45bbeb0)
Pure GSI build targets has no vendor partition, such as
aosp_$arch_ab and gsi_$arch. The system properties defined by
PRODUCT_PROPERTY_OVERRIDES will be in /system/build.prop.
The patch defined a fake BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE to
let these system properties flow to vendor and won't pollute the
system.img.
The bug also move some properties to /product/build.prop.
Bug: 135508595
Bug: 131162245
Bug: 134781120
Test: check the /system/build.prop do not have "ro.carrier=unknown"
Test: adb remount on GSI Q on P
Change-Id: Ib200d66cf98fea572c26338e058bce29eb5e0cd7
These were found when trying to run remotely on RBE with only the
sources depended upon available for each rule.
Bug: 130111713
Test: treehugger
Change-Id: Id763f8fc7dfbe60445f98604db3422147165f537
The build system default was changed to not support apex, but
we want the mainline device to enable it.
Also re-disable it for GSI.
Test: make
Change-Id: I9a4372d375c2c741d7de5b2f83cac3c4b08767f8
Merged-In: I9a4372d375c2c741d7de5b2f83cac3c4b08767f8
avbtool spends considerate amount of time, we want
to disable it in build environment to make incremental
build speed a bit faster.
BUG: 133259713
lunch sdk_phone_x86-eng
export QEMU_DISABLE_AVB=true
make -j
Change-Id: I0d227fc5933aaab1d49f66f4b07b35922bc6255b
The previous need to build mainline devices as A/B no longer applies
[1], as we have unbundled the install of update-payload-key.pub.pem from
AB_OTA_UPDATER. Unsetting AB_OTA_UPDATER from BoardConfigMainlineCommon
defers the decision of using A/B OTA to be board-specific.
mainline_arm64 is considered as a specific board to build generic
system-only OTAs in A/B format. So it defines the two variables there.
[1] commit 571fab0610
Bug: 130516531
Test: TreeHugger
Test: Compare the built images for GSI and mainline targets. They don't
have different artifacts due to the change.
Change-Id: I33cc9b6623dca7cc7c2a7e2c65cdbccced5e816e
With the support of enabling AVB on standalone partitions in libfs_avb,
devices can boot GSI with dm-verity. No need to disable AVB anymore.
Devices still can use the following command to disable AVB on
device-specific vbmeta.img if needed:
`fastboot flash --disable-verification vbmeta vbmeta.img`
Bug: 130595457
Test: Tree Hugger
Change-Id: I067dcda15f14f04428e0b60ce1f49227d61e4349
The extensions is for OEM. To avoid AOSP code using OEM
extensions mistakenly. GSI denys product to use the extensions
by enabling the following property:
ro.nnapi.extensions.deny_on_product=true
Bug: 129900377
Test: make gsi_arm64-userdebug, check /system/build.prop
Change-Id: Ia679f1f9c108bd5a164c8cdeb1d73f57da755608
Currently, emulator system image is the non-legasy GSI, which is in sparse
format. Several internal clients don't support sparse format, and other
internal/external clients usually support both. The reason to choose sparse
format for GSI may not be valid any more. See bug for detail.
Bug: 130341962
Test: Checked the header of system.img to see if it's unsparse.
Boot emulator aosp_x86 successfully.
Boot mixed GSI and CF x86 successfully.
Change-Id: I839f49809429227607b2e876a4a3628df43a97b4
Like Ie413f84c545c869ee336912a7b05ca80bb968129, but for all
mainline devices.
Bug: 119800099
Test: m
Change-Id: Ief77adaea61203a013f85cf870c5350253fdb7dd
Move a couple of variables out of BoardConfigMainlineCommon
because they vary either by device or by how they build in
AOSP vs internal.
Bug: 80410283
Test: presubmit
Change-Id: Ia42df91ad8c8d8fc4618be375a17ea23896f4352
Merged-In: Ia42df91ad8c8d8fc4618be375a17ea23896f4352
Move a couple of variables out of BoardConfigMainlineCommon
because they vary either by device or by how they build in
AOSP vs internal.
Bug: 80410283
Test: presubmit
Change-Id: Ia42df91ad8c8d8fc4618be375a17ea23896f4352
The _a targets are build for Legacy GSI for non-system-as-root
partition layout devices. The Android build system is not able
to build a system image with non-system-as-root anymore.
Also, `init` supports mounting system-as-root system image at
all, all devices should no problem to mount it.
Bug: 124278972
Test: none
Change-Id: I9c56e7e5d8517a630854f030616c3b3ecb94b9a8
This flag is not allowed to be true when dynamic partitions are
enabled, which mainline devices are expected to do.
Bug: 80410283
Test: make
Change-Id: I50c9fe9332ea1490a84484f9311cfe001a083754
This setting moves the PRODUCT_PROPERTY_OVERRIDES to
the vendor partition.
Bug: 80410283
Test: tail system/build.prop | grep ro.carrier=
(empty)
Change-Id: I30d564fbd2dd3b56763ccff77979b223857f1c2f
This config was in a weird state where it sets the OUT
directory for these partitions but not the file system
type. Within the build system, both of these variables
are used interchangeably to check whether these partitions
are expected to be present.
A typical mainline device is expected to /vendor and
/product, so just add these.
Bug: 120974093
Test: make
Change-Id: I803d7afdcadc37e4384ae80f08bc1c8db535d2f4
The file $(TARGET_OUT_ETC)/update_engine/update-payload-key.pub.pem
is installed conditionally based on this variable, and was found
to differ between mainline_system and the intended device targets.
Also move the variable from gsi_common.mk as GSI inherits the mainline
boardconfig. The variable is not a PRODUCT flag (and not inherited as
such), so fits better in the BoardConfig I think.
Bug: 80410283
Test: presubmit
Change-Id: Ida6fa923fd01b062ff3b93e7737e1e6edf7e4fa1
RescueParty reboot the device to recovery mode if there is any
priv app die continuously. The behavior blocks the testing.
Disable the feature temporary before all problem apps fixed.
Bug: 120679683
Test: Boot a device with GSI and a die app
Test: Unplug USB and does not auto reboot
Change-Id: I70e5b7222299c6d0173d87e41d7a68beeda77dd5
Adds icu-data_host_runtime_apex to fix unbundled builds which pull it in
via PRODUCT_PACKAGES, but are missing packages that would pull it in via
PRODUCT_HOST_PACKAGES.
Test: build/soong/build_test.bash
Test: in ub-timezonedata-master; tapas TimeZoneData; m
Change-Id: I1583c7582b386c3e8478711cb1df340518d763c1
Merged-In: I1583c7582b386c3e8478711cb1df340518d763c1
Adds icu-data_host_runtime_apex to fix unbundled builds which pull it in
via PRODUCT_PACKAGES, but are missing packages that would pull it in via
PRODUCT_HOST_PACKAGES.
Test: build/soong/build_test.bash
Test: in ub-timezonedata-master; tapas TimeZoneData; m
Change-Id: I1583c7582b386c3e8478711cb1df340518d763c1
This reverts commit 7218a21ed0.
Reason for revert: broke some side branches, and the mac build
Change-Id: Ifa52f2dbf9a383f69e07ba0aceb4742b05376364
Fixes: 125912305
This only defines PRODUCT_HOST_PACKAGES as a concept, and requires that
it contain at least all of the files that would be installed to the host
from PRODUCT_PACKAGES (minus libraries, as those are expected to be
installed based on what's required by other modules).
It does not actually change what will be built, that will happen in a
future change.
Test: build/soong/build_test.bash
Change-Id: Ie502b1a483f821b957cfd407c31a93e243896dae
In BoardConfig.mk, ODM manifests can be specify as follows:
# installed to /odm/etc/vintf/manifest.xml
ODM_MANIFEST_FILES := device/foo/bar/odm_manifest.xml
# installed to /odm/etc/vintf/manifest_baz.xml
ODM_MANIFEST_SKUS := baz
ODM_MANIFEST_BAZ_FILES := device/foo/bar/odm_manifest_baz.xml
This is preferred over PRODUCT_COPY_FILES because it uses
assemble_vintf to check manifest at build time.
Test: builds
Change-Id: I18517b8ba09d3271627d6f21b8250b1bfc9e5db3
The major purpose of vbmeta.img built on GSI targets (e.g., aosp_arm,
aosp_arm64, etc) is to disable AVB. We should also set the rollback
index to zero, to prevent the device bootloader from updating the
last seen rollback index in the tamper-evident storage.
Bug: 122583908
Test: build aosp_arm64, then `avbtool info_image --image $OUT/vbmeta.img`
Change-Id: I48a49957f8dd3169003b9507fe80e519f301d5b5
GSI doesn't include gsi_system.prop on user build, and cause some
devices cannot boot GSI with user build. Some properies in
gsi_system.prop do not suitable for user build, the patch create
a new gsi_system_user.prop for GSI user build.
Bug: 124479721
Test: boot aosp_arm64-user on a blueline device.
Change-Id: Ide2bdc8e8733817afb832b50b28807768e22f011
Regular (non-flattened) APEX may require changes to the kernel, which is
against the Treble promise. For maximum compatibility, APEXes are
flattened for GSI so that APEXes can be activated by legacy kernels.
Bug: 124159875
Test: N/A
Change-Id: Iea5701d3b917ebf8657d3ce38131c1838b51677e
* avbtool expect extra flags to be passed with the --flags argument
but currently we're missing an 's'.
Luckily this isn't an issue as python argparse matches
--flag as an alias to --flags ( python... )
Test: m vbmetaimage; check vbmeta header
Change-Id: I42d833c61c9b313dc067b1e519bae36395d09824
This matches the build config used on current mainline devices,
but should ideally be removed once possible.
Bug: 123695868
Test: boot blueline
Change-Id: I8fdef9fbe45b75f175afe9350974f54d1ec5e0c8
The patch changes GSI (aosp_$arch) to inherit from gsi_common.mk
instead of aosp_base_telephony.mk.
The patch also clones the emulator_vendor.mk from emulator.mk to
include all vendor modules.
Bug: 119747870
Test: boot aosp_arm64-userdebug on a blueline device on master/P
Test: boot aosp_x86-userdebug on the emulator
Test: boot aosp_x86_64-userdebug on the emulator
Test: compare the out folder with/without the patch, only more content
Change-Id: Ibd398d4f93d2a964813e05ccd434975435d25adc
gsi_common.mk is a new makefile file for GSI build targets.
It inherited the content from Mainline by mainline_system.mk.
Also it include other default GSI settings and try to covered
all contents from aosp_base_telephony.mk
It will be used to replace the treble_common*.mk. All
aosp_$arch*.mk will become to inherit from gsi_common.mk.
This patch also contains a new build target gsi_arm64,
which is used to test the gsi_common.mk purely.
Bug: 119747870
Test: compare the out system folder between gsi_arm64 and aosp_arm64
Test: also the gsi_arm64-userdebuge can boot on a Pixel device
Change-Id: I9a013f9407e0fe06b45011e36d5169b94f67148d
Stop using armv7-a without neon for 32-bit unbundled apps, and update
generic_x86_arm to match the cuttlefish configuration that includes
neon.
Test: treehugger
Change-Id: Ieb6a2106655803a8ca609907c12168e628ee1b85
This product variable is used to generate the loader config (to use
either /system/product or /product), and the vendor one is likely
used in similar ways. Having these partitions is required for mainline
devices, so set it in the shared BoardConfig.
Bug: 80410283
Test: make
Change-Id: I6f2d94ff43572a28df54ea8c60f2d838a3b9216c
It's 2019 and the CDD has required NEON for many years now.
I've left unbundled apps alone for now.
I think the recent fix here for https://issuetracker.google.com/116070933
was incorrect. (I've commented on the bug.)
Test: treehugger
Change-Id: Ia02305cfdff9fd18a85359bc44d8eb9cab1413bd
Legacy GSI had been changed to include BoardConfigGsiCommon.mk
instead of treble_common*.mk. However, some default settings are
different than the original. This patch fixes
BOARD_BUILD_SYSTEM_ROOT_IMAGE in Legacy GSI makefiles.
The patch also removes redundant settings and fix some comments.
Bug: 122282239
Test: make
Change-Id: Ie4eb8cf410bfd2edc74648c0e5ee81028242a1b7
It's 2019 and the CDD has required NEON for many years now.
I've left unbundled apps alone for now.
Test: treehugger
Change-Id: Iee22d4605a81e2840063a203b76db7df5b4f3c37
This flag turns on 64-bit mediadrmserver for mainline. Keep the default
value for GSI for now.
Bug: 80410283
Test: make
Change-Id: Ie09b258f140b56121e4b531775b2a052b4dc6c15
The patch modifies the Legacy GSI to use BoardConfigGsiCommon.mk
instead of board config treble-common*.mk, and delete these
treble-common*.mk files.
After the patch, the GSI common board configs are in single file
BoardConfigGsiCommon.mk
The patch also includes:
- Moving `TARGET_COPY_OUT_VENDOR := vendor` to
BoardConfigGsiCommon.mk, because GSI always contains no vendor
contents.
- Configure the binder interface bitness explicitly.
- Unify the structure of each BoardConfig.mk.
Bug: 122282239
Test: compare the out folder between with and without the patch
Test: output files are all the same
Change-Id: Ie5901446920dda317dea848e6d5a7bbcf10a32cf
The binder interface bitness is always 64bits from P.
To keep 32bits binder interface for Legacy GSI, we need to explict
configure it.
Bug: 122282239
Test: lunch aosp_arm_ab-userdebug; make -j
Change-Id: I90b45adb52c398d1c0cf3f877199f9dd1e0b3f86
Partial rollback of Id5d114bde8b93800fe52c791ccc47cdffd86f382.
It is likely mainline also wants some of the BOARD_AVB_SYSTEM.. flags,
but I'm not entirely sure which ones.
Test: run build_mixed with this patch
Change-Id: I6ef3c01f6c74e6d93cf798b26b8c7a4785bbefb4
Make the mainline board config only import a subset of the GSI
options. The current set of attributes is the minimal set to
keep mainline_system_arm64 building, as well as not producing
any diffs in the current set of files in /system. It's possible
we'll need to move a few more over, but we'll do that on a
case-by-case basis.
Make the GSI config inherit the mainline one. The only diff for GSI
should be the addition of BOARD_USES_SYSTEM_OTHER_ODEX.
Bug: 119911662
Test: build mainline_system_arm64
Change-Id: Id5d114bde8b93800fe52c791ccc47cdffd86f382
Likely not the final setting we'll settle with for this device,
but brings mainline_system builds closer to the device builds
it's targeting.
Bug: 80410283
Test: build mainline_arm64
Change-Id: Ib672d1a060d0ad6a4e1faa210461bbbbaf6f2bc6