Commit graph

2179 commits

Author SHA1 Message Date
Dan Willemsen
6b72c73a50 Fix dependency on BOARD_AVB_SYSTEM_KEY_PATH
Bug: 130111713
Test: treehugger
Change-Id: I2183ac9f8c45eec178876768dfcc83ae62445293
2019-06-12 21:36:57 +00:00
Treehugger Robot
56bfae6402 Merge "Add missing dependencies to python scripts" 2019-06-11 03:15:54 +00:00
Treehugger Robot
e6d5b8321f Merge "Ignore testcases' NOTICE files" 2019-06-11 00:24:31 +00:00
Dan Willemsen
c84e4cb917 Add missing dependencies to python scripts
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
2019-06-10 23:58:49 +00:00
Treehugger Robot
f1e61651e0 Merge "Print a warning when sum of sizes of logical partitions an OEM-set limit" 2019-06-10 18:17:40 +00:00
Hridya Valsaraju
6fab18a7eb Print a warning when sum of sizes of logical partitions an OEM-set limit
BOARD_SUPER_PARTITION_WARN_LIMIT can be set by OEMs to print
a warning when the sum of sizes of logical partitions exceed the same.
It is set to 95% of BOARD_SUPER_PARTITION_SIZE by default.

Bug: 133329143
Test: mmm -j32

Change-Id: I7d3bedd970a92be60991898e436f63d914359301
2019-06-07 09:50:47 -07:00
Alistair Strachan
95836d71e6 Merge "Add misc_info.txt to rebuild super.img" 2019-06-06 20:23:17 +00:00
Isaac Chen
4e5e42b749 Add misc_info.txt to rebuild super.img
Include misc_info.txt (of CF's super.img) in *-img-*.zip.
This is needed if we want to rebuild super.img by replacing
some partitions in it.

Other tools, lpunpack and lpmake, are included in CF's
host package in another CL.

Bug: 134461288
Test: $ lunch aosp_cf_x86-userdebug
      $ m dist
      $ unzip -l $OUT/*-img-*.zip | grep misc_info
            619  2019-05-27 17:42   misc_info.txt

Change-Id: Idf6146c2a7f9f32c9c4e5ddd2f6b9e65fc6bf55b
2019-06-05 14:23:31 +08:00
Tao Bao
4978fa99d1 Rebuild recovery-from-boot patch when calling add_img_to_target_files.
When using Verified Boot 2.0, releasetools specifies a salt value based
on build fingerprint, so that to give idempotent images.

However, the change that removed static `ro.build.fingerprint` [1] broke
the behavior, as common.LoadInfoDict still relies on fingerprints.
Without a fixed salt, the first call to make_recovery_patch.py and the
second one (which writes IMAGES/{boot,recovery}.img) will see different
images, which leads to install-recovery.sh failure.

Note that currently there's a dependency that requires getting bootable
images through two separate calls. make_recovery_patch.py has to happen
first to get (placeholder) files in the system image. We then generate
canned fs_config files, and finally use add_img_to_target_files.py to
write the images.

This CL adds a quick workaround to force rebuilding the
recovery-from-boot patch while calling add_img_to_target_files.py.

[1] https://android-review.googlesource.com/c/platform/build/+/892933

Bug: 134123803
Bug: 134525174
Test: TreeHugger
Test: Build a non-A/B target that uses AVB. Run validate_target_files.py
      on the generated target_files.zip.
Change-Id: I5859e30be63bfd54398cf41fd2d907f15285f560
2019-06-04 22:44:45 -07:00
Jooyung Han
4416b009e1 Ignore testcases' NOTICE files
$(BUILD_NATIVE_TEST) will install a test binary into /testcases
regardless of is proprietary or not.
For now, since NOTICE.xml for a system partition depends on all modules in
/testcases, "m systemimage" may trigger "installing a proprietary test".

Modules in /testcase are not actually installed, so we can ignore them
when we make a notice file.

Bug: 133454731
Test: (internal) m systemimage, and see /vendor/lib if there are
unexpected files installed.

Change-Id: I54ee51a761049b8a5ce9e3369b30b7ade6344146
2019-06-01 09:57:28 +09:00
Dan Willemsen
288bedfc8f Convert more uses of $(ACP) to cp
Test: treehugger
Change-Id: Id8365ce4c06dfe731be9b80f805e071fab522909
2019-05-28 15:36:47 -07:00
Treehugger Robot
8614d0181c Merge "Remove recovery.id completely" 2019-05-24 16:35:44 +00:00
Daniel Norman
c9fc1120c1 Merge "Adds image-specific selinux_fc props to allow different file_contexts." 2019-05-23 23:42:13 +00:00
Daniel Norman
72c626f017 Adds image-specific selinux_fc props to allow different file_contexts.
This enables mixed builds to use the file_contexts.bin from the system
build when regenerating images that come from system target files, and
similarly for file_contexts.bin from the other build when regenerating
images from other target files.

In monolithic (non-mixed) builds all image-specific selinux_fc props
point to the same file_contexts.

Bug: 132108151
Test: Built and booted mixed build devices.
Change-Id: Id51ed6d96ea6337879f1ab21d47c93c67bc25312
2019-05-23 11:21:02 -07:00
Jooyung Han
72b65abd41 Remove recovery.id completely
Since aosp/887473 removed ro.expect.recovery_id,
There is no usage of "RECOVERYIMAGE_ID_FILE" which points
$(PRODUCT_OUT)/recovery.id.

Test: m && boot
Change-Id: I704af874b7e4141d2e006595242f7b681aa47f05
2019-05-23 19:48:13 +09:00
Treehugger Robot
41b46710e9 Merge "Moving /odm/build.prop to /odm/etc/buid.prop" 2019-05-23 09:16:34 +00:00
Treehugger Robot
0c45b0d982 Merge "Allow for the DTB image to be built by the Android build system." 2019-05-22 07:28:24 +00:00
Bowgo Tsai
71a4d5cdd5 Moving /odm/build.prop to /odm/etc/buid.prop
In device root directory, we have the following symlinks:
  - /odm/app -> /vendor/odm/app
  - /odm/bin -> /vendor/odm/bin
  - /odm/etc -> /vendor/odm/etc
  ...

This allows the Generic System Image (GSI) to be used on both devices:
  1) Has a physical odm partition, where those symlink will be hidden
     when /odm is used as the mount point
  2) Has no physical odm partition and fallback to /vendor/odm/.

We can't just have the symlink /odm -> /vendor/odm, because the former
devices won't have /vendor/odm directory, which leads to mount failure
when the mount point /odm is resolved to /vendor/odm.

The existing /vendor/odm/build.prop won't be loaded in the latter
devices, because there is no symlink:
    - /odm/build.prop -> /vendor/odm/build.prop.

Note that init blocks reading through direct symlinks (O_NOFOLLOW) so
the above symlink won't work either. This CL moves the odm build.prop
to /odm/etc/build.prop for init to load it (symlinks in earlier
components of the path will still be followed by O_NOFOLLOW).

Bug: 132128501
Test: boot a device and checks /odm/etc/build.prop is loaded
Test: make dist with an odm.img, checks $OUT/odm/etc/build.prop is loaded
Change-Id: I6f88763db755c9ec6068bfdd9cee81c19d72e9d7
Merged-In: I6f88763db755c9ec6068bfdd9cee81c19d72e9d7
(cherry picked from commit 6c62884000)
2019-05-22 14:04:39 +08:00
Hridya Valsaraju
59eaef078d Allow for the DTB image to be built by the Android build system.
The current solution expects BOARD_PREBUILT_DTBIMAGE_DIR to
contain prebuilt DTB files that are concatenated by the build system
to create $OUT/dtb.img. In order to accommodate devices that build
the dtb image locally, make boot.img creation depend on $OUT/dtb.img
only when BOARD_PREBUILT_DTBIMAGE_DIR is undefined.

Bug: 133161451
Test: Build with BOARD_PREBUILT_DTBIMAGE_DIR undefined and verify
using unpack_bootimg.py that $OUT/dtb.img was included in boot.img.

Change-Id: Iae2c634ccdc1d83589b26d382882f75fb8565a31
2019-05-22 03:51:41 +00:00
Chris Gross
a489a92fdc Merge "Add merging of apexkeys and apkcerts metadata" 2019-05-20 23:36:45 +00:00
Chris Gross
fabf50a577 Add merging of apexkeys and apkcerts metadata
Bug: 131437873
Test: Built system-only and vendor builds for merge. Compared
resulting apkcertx and apexkeys text files to that of a monolithic
build,
Test: Created colliding entries in both apexkeys and apkcerts text
files and ensure the script exited with an appropriate error message.
Test: Created unit tests to cover both non-colliding and colliding
entries
Change-Id: I6e42ce682ffa9059344e8cd63ba3a720c1f93452
2019-05-20 18:35:22 +00:00
Colin Cross
606c9f4d0d Move check-all-partition-sizes to a non-phony rule
Phony rules with recipes run on every build, move the recipe for
check-all-partition-sizes to a rule with an output.

Fixes: 132900128
Test: m && m
Change-Id: I9b4d335bf269cd09a01094e895fc15053b410415
2019-05-17 15:51:39 -07:00
Bowgo Tsai
9b54801b58 Appending per-partition os_version into AVB props
os_version is important for keymaster version binding, where it
refuses to perform operations with a key that is bound to an old
system version.  This ensures that an attacker who discovers a
weakness in an old version of system or TEE software cannot roll a
device back to the vulnerable version and use keys created with the
newer version.

Previously, os_version for system.img is added into boot.img header
for bootloader to read the value then pass to TEE before booting the
HLOS. However, with project Treble to modularize each partition, all
images are now in the trajectory to be built independently (still
on-going). Also, in the Generic System Image (GSI) compliance test,
the os_version in OEM's boot.img cannot reflect the actual version of
GSI.

This CL adds per-partition os_versions into AVB metadata, which is
readable by bootloader via libavb without file system dependency. It's
still unclear for how os_version in non-system partition should be used.
We just add them for completeness here.

See more details in:
https://source.android.com/security/keystore/version-binding

Bug: 132233601
Test: build and avbtool info_image $OUT/vbmeta.img
      - Prop: com.android.build.boot.os_version -> '10'
      - Prop: com.android.build.system.os_version -> '10'
      - Prop: com.android.build.system.security_patch -> '2019-06-05'
      - Prop: com.android.build.vendor.os_version -> '10'
      - Prop: com.android.build.vendor.security_patch -> '2019-06-05'
      - Prop: com.android.build.product.os_version -> '10'
      - Prop: com.android.build.product.security_patch -> '2019-06-05'

Change-Id: I21a77420f2e8a3456f7a8cae5158eb8fc41319e7
2019-05-16 12:56:41 +08:00
Treehugger Robot
e591ef32a0 Merge "Move ro.boot.dynamic_partitions to vendor/build.prop" 2019-05-08 21:39:26 +00:00
Chris Gross
84c96eba1e Merge "Add BUILD_RECOVERY_IMAGE and BUILD_BOOT_IMAGE flags" 2019-05-08 18:21:42 +00:00
Hridya Valsaraju
1fd498d748 Move ro.boot.dynamic_partitions to vendor/build.prop
Bug: 132197773
Test: property present in vendor/build.prop

Currently, the property resides in product partition which gets
overwritten by the GSI image. Moving it to vendor will ensure
that the property is set even when a GSI image is flashed on the device.

Change-Id: I4d4a3c473194e15ba124a121f89bbb3ec1a73d19
2019-05-08 16:22:06 +00:00
Treehugger Robot
5eba1c9a67 Merge "Compute the needed shared libs for otatools." 2019-05-08 03:44:33 +00:00
Colin Cross
8d34244739 Use --ignore_missing_files when creating symbols.zip
symbols.zip is created while files that are not part of the platform
build but were requested on the Make command line (for example by
passing "tests") are still being installed.  Installation often
involves removing and then recreating the file.  If the file
exists when the list of files to be zipped is created, but is
removed when soong_zip is zipping, it fails with an error.  Pass
--ignore_missing_files to silence the error and keep zipping.

Fixes: 79503862
Test: m checkbuild
Change-Id: I1fbbf1f1396948288ee133c319b2e19dee97983b
2019-05-07 11:47:13 -07:00
Chris Gross
a784ef197c Add BUILD_RECOVERY_IMAGE and BUILD_BOOT_IMAGE flags
Bug: 123428770
Test: Built system-only image and checked that no boot.img or
recovery.img files where created. Booted the resulting merged build on
device.

Change-Id: I760476502775e68125907c39e66b8665e789a798
2019-05-07 11:00:37 -07:00
Tao Bao
96daeebd0e Compute the needed shared libs for otatools.
This keeps the packed shared libs in sync with their executables.

This CL also changes the packing location of mke2fs.conf, from
system/extras/ext4_utils/mke2fs.conf to bin/mke2fs.conf.

Bug: 34738751
Test: `m -j otatools-package`. Compare the packed files against the ones
      prior to this CL.
Change-Id: Icae88e3cd898460f5ba7dc11ab8a57350630c432
2019-05-06 20:03:57 -07:00
Treehugger Robot
38809bdf99 Merge "Using a test key to sign boot-debug.img if needed" 2019-05-07 01:07:02 +00:00
Tao Bao
59c700154b Merge "Remove unused shared libs from otatools." 2019-05-06 16:32:25 +00:00
Tao Bao
1d642bc382 Remove unused shared libs from otatools.
libcurl-host.so was added for delta_generator (commit f8e6fbe2f5).
libext2_misc.so and libext2_profile-host.so were added for e2fsck and
build_verity_tree (commit d0ec665727). None of them is actively used by
otatools.

Bug: 34738751
Test: `m -j otatools-package`. Unzip and check that there's no missing
      shared libs reported by ldd.
Change-Id: Id229e450f5f2eaa03a6c6cf568a1912add06754c
2019-05-05 20:42:25 -07:00
bohu
9492ee3d1b emulator: support dynamic partitions
BUG: 125540538

Change-Id: I9d486f57ac4ec11b1bbe9ab97890d12441c3054e
Merged-In: I9d486f57ac4ec11b1bbe9ab97890d12441c3054e
2019-05-05 20:34:02 -07:00
Bowgo Tsai
26b0a26e3e Using a test key to sign boot-debug.img if needed
When /boot partition is chained in AVB signing, libavb will try to
read AVB footer from the end of /boot partition, even if the device is
unlocked. However, this makes device unbootable when the unsigned
boot-debug.img is flashed on /boot partition. This CL uses a test key
from external/avb to sign the boot-debug.img if /boot partition is
chained.

Bug: 126493225
Bug: 129508966
Test: Enables chain partition for boot.img, `make bootimage_debug` then
      checks `avbtool info_image --image $OUT/boot-debug.img`
Test: `make bootimage_debug-nodeps`
Test: boot a device with a chained boot-debug.img

Change-Id: I870cb70c70b7d4d7a30b77bed58cbca6e007d5e3
2019-05-04 09:01:09 +08:00
Treehugger Robot
6c0a3af4bf Merge "Add the library absence check as a kati stage check." 2019-05-03 15:09:18 +00:00
Tao Bao
31c2bf905e Merge "Update the references to verity tools." 2019-05-03 13:41:45 +00:00
Martin Stjernholm
b0382f0319 Add the library absence check as a kati stage check.
Primarily for use with build_test during presubmit.

Moved the check to main.mk to avoid nonobvious dependency on
product_target_FILES from main.mk to Makefile.

Test: m systemimage
Test: build/soong/build_test.bash
Test: m out/target/product/taimen/system/lib/libdexfile.so; m systemimage;
  check that "find"-based check fails
Test: Add a system library to APEX_MODULE_LIBS; m systemimage;
  check that "product_target_FILES"-based check fails;
  env DISABLE_APEX_LIBS_ABSENCE_CHECK=true m systemimage;
  check that it works
Bug: 124293228
Change-Id: I7a93cc0ac4480404a3d56c75eb43ae499e8a3a05
2019-05-03 13:02:51 +01:00
Tao Bao
d5ab10eed4 Update the references to verity tools.
Test: `m -j dist` with aosp_marlin-userdebug
Test: `atest releasetools_test`
Test: Run signing with otatools.
Test: TreeHugger
Change-Id: I60d5bad4435d588c5f97b2245ca67ed3d55299b7
2019-05-02 18:32:11 -07:00
Martin Stjernholm
ee30c73c63 Add libs that have been resolved to the library absence check.
Note: libtombstoned_client.so was moved from the Runtime APEX to system with
http://r.android.com/941388.

Test: m systemimage
Bug: 124293228
Bug: 131587358
Change-Id: I9e517d3c2344b39cf2743a34723572e646675677
2019-05-02 12:01:02 +01:00
Anton Hansson
f299889513 Remove unneeded bootimage properties
These were added as part of http://r.android.com/731514, but
most of these properties make no sense for the bootimage. Revert
to only defining date, date.utc and fingerprint.

Bug: 131066061
Test: inspect vendor/build.prop
Test: boot, no SELinux warnings for removed props
Change-Id: Ibbeff9870a5b71e83c2cceeb1327b12600077b23
2019-05-01 13:20:27 +01:00
Yifan Hong
0e97dbb8ca Add BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE flag.
When set, product-img-tag.zip contains super.img instead of individual
user images from target files. For virtual devices, super.img is needed
to boot the device, but individual user images aren't needed.

Test: on A/B DAP, with flag set:
     - m updatepackage and look at img.zip
     - img_from_target_files
     both have super.img and not system / vendor / system_other
Test: on non-A/B DAP, with the flag set:
     - m updatepackage and look at img.zip
     - img_from_target_files
     both have super.img and not system / vendor
Test: on A/B retrofit, with the flag set:
     - m updatepackage and look at img.zip
     - img_from_target_files
     both have super_*.img and system_other.img, but not system / vendor
Bug: 113175337

Change-Id: I94e33091d0c837cae40776176b4dcfdd338aba90
2019-04-29 10:50:42 -07:00
Yifan Hong
8bfcc69e38 Merge "Add BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT flag." 2019-04-26 21:30:07 +00:00
Yifan Hong
7e6397c2d5 Fix mainline_mixed build
build_mixed script can't merge system and product VINTF
data yet.

Fixes: 131418170
Bug: 131425279
Test: build 'target_files_package' for 'mainline_system_google_arm64',
see META/system_manifest.xml

Change-Id: I366d9bc802ee0e6bdf8fe480303f3fee827c579d
2019-04-26 12:30:31 -07:00
Treehugger Robot
4ec15d2c50 Merge "Remove libjavacrypto from system image." 2019-04-26 18:00:38 +00:00
Treehugger Robot
eccbfd5f4e Merge "Ignore vndk-* subdirectories in the library absence check." 2019-04-26 14:23:54 +00:00
Martin Stjernholm
60bb358221 Ignore vndk-* subdirectories in the library absence check.
They only contain prebuilts from older releases.

Test: m systemimage on affected internal lunch targets
Bug: 124293228
Change-Id: I059c9d0edb78e52838a25cef0472807847d77417
2019-04-26 12:12:34 +00:00
Pete Bentley
f9dd05f1bf Remove libjavacrypto from system image.
The only copy needed is the one in the Conscrypt APEX.

Bug: 123925742
Test: m
Change-Id: Ieea8549d047750cf3580d6fe0204fdf55b6b8394
2019-04-26 10:28:16 +01:00
Yifan Hong
001ebfcb30 Merge changes from topic "productmanifest"
* changes:
  ota_from_target_files: include metadata when odm / product is changed.
  Add product manifest.
2019-04-25 22:51:27 +00:00
Yifan Hong
acd862aed3 Add BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT flag.
If set to true,
- super.img is built from images in $PRODUCT_OUT
- super.img is built to $PRODUCT_OUT
- super.img is built when 'make'.

'make dist' still builds super image from images in target files to
intermediates directory.

This flag is useful for virtual devices, but isn't intended to be set for
actual devices. For actual devices, userspace fastboot should flash
super_empty.img and individual user images separately.

Test: on cuttlefish (flag is set),
      make            # generates $OUT/super.img
      make superimage # generates $OUT/super.img
Test: on real non-retrofit DAP device (flag is not set)
      make            # no super.img is generated
      make superimage # generates $OUT/obj/PACKAGING/.../super.img
      make dist       # generates out/dist/super.img

Bug: 113175337

Change-Id: Ieb81e4fbb663bb4b69e9962c3fa9f16b03aeb907
2019-04-25 10:51:35 -07:00