Commit graph

7091 commits

Author SHA1 Message Date
Treehugger Robot
fdb2f2c5db Merge "Swich TEST_MAPPING config to unit_tests:true" 2020-12-22 21:32:31 +00:00
Julien Desprez
dc0663f66f Merge "Remove the zipalign_test mapping file" 2020-12-22 00:25:05 +00:00
Julien Desprez
6d9e78fd5d Swich TEST_MAPPING config to unit_tests:true
All unit_tests:true are run in presubmit which avoids
the explicit definition of TEST_MAPPING.

Test: presubmit runs all those tests
Bug: 175408655
Change-Id: Ibfad3fe2dd8d2fa1ebc6f6bcbd8ab34c2a0069dc
2020-12-21 13:56:05 -08:00
Julien Desprez
2bbc159e97 Remove the zipalign_test mapping file
Not needed as the host-unit-tests suite runs in
presbumit now and cover this

Test: None
Bug: 175408655
Change-Id: Iea3e3cd7f696f43b6c686ef9cbee1194f514e589
2020-12-21 09:58:17 -08:00
Yo Chiang
d21e7dc833 Add support for packing multiple vendor ramdisks in vendor_boot
Add support for partitioning the vendor_boot kernel modules into
multiple vendor ramdisk fragments. The partition granularity is kernel
module directory. This mechanism builds upon the existing
BOARD_KERNEL_MODULE_DIRS mechanism. For example, say we have three
kernel module directories:

BOARD_KERNEL_MODULE_DIRS := foo bar baz

We can then define a vendor ramdisk fragment:

BOARD_MKBOOTIMG_ARGS += --header_version 4
BOARD_VENDOR_RAMDISK_FRAGMENTS := dlkm_foobar

And let said ramdisk to contain the DLKM directories "foo" and "bar":

BOARD_VENDOR_RAMDISK_FRAGMENT.dlkm_foobar.KERNEL_MODULE_DIRS := foo bar
BOARD_VENDOR_RAMDISK_FRAGMENT.dlkm_foobar.MKBOOTIMG_ARGS := <mkbootimg args>

The built vendor_boot image would contain two ramdisks.
The first one being the "default" ramdisk, which contains DLKM directory
"baz" and the rest of the files that get's installed to
$(TARGET_VENDOR_RAMDISK_OUT).
The second one is the "dlkm_foobar" ramdisk, which contains the two DLKM
directories.

Design doc: go/vendor-boot-v4

Bug: 162864255
Test: Modify BoardConfig.mk to have a product build v4 vendor_boot
Test: Use unpack_bootimg to verify the vendor_boot image
Test: Teach a bootloader how to handle v4 boot image, flash boot &
  vendor_boot and boot device
Change-Id: Ibb1bbd7ebe36430c55ec6c4818c1d3888a319089
2020-12-17 11:07:04 +08:00
Julien Desprez
31839fe1cd Merge "mark zipalign_test as unit tests" 2020-12-14 16:11:41 +00:00
Elliott Hughes
27de935d83 Update OWNERS.
Test: treehugger
Change-Id: I5f9ddd03d5cd34fb398b842c933dc6a365be4b39
2020-12-11 12:56:27 -08:00
Julien Desprez
74b8e09094 mark zipalign_test as unit tests
Test: make
Bug: 175408655
Change-Id: I03a7a0bb19ea408830acbf1ebe12ffb25012af91
2020-12-11 11:52:45 -08:00
Jaegeuk Kim
74e57f6482 Merge "Enable system partition compression" 2020-12-10 00:41:04 +00:00
Treehugger Robot
70c61bc6e9 Merge changes I1deda85d,I43d7b2c6
* changes:
  calculation partition size use compressed image size
  add erofs to non partition spanning fs
2020-12-09 06:50:56 +00:00
Robin Hsu
3e51f4234c Enable system partition compression
* Prerequisites: external/f2fs-tools: sload compression support
* Must work with corresponding changes in system/extras repository
* If Board config does not change, it falls back to old behavior,
  i.e. no compression for the system partition
* Kernel f2fs compression support is a prerequisite if the Board config
  enables the compression (see below)
* Necessary board config change
 (e.g. device/<vendor>/<product>/BoardConfig-common.mk)

BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := f2fs
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 200000000
BOARD_SYSTEMIMAGE_FILE_SYSTEM_COMPRESS := true
BOARD_SYSTEMIMAGE_F2FS_SLOAD_COMPRESS_FLAGS := <sload compress sub-options>

Setting BOARD_SYSTEMIMAGE_FILE_SYSTEM_COMPRESS to true enables both the
compression support when the initial empty file system be made (mkfs.f2fs)
and the compression flag (-c) when the system image files be side-loaded
by sload.

Sload compress sub-options (i.e. options other than -c) will be provided
by BOARD_SYSTEMIMAGE_F2FS_SLOAD_COMPRESS_FLAGS.   If it is not given, or
is empty, the default sub-options will be used

Please refer to the sload.f2fs manual page.

Setting BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE to f2fs is trivially necessary.

* File system table (fstab), notably the file 'fstab.hardware', should
  also changed:
  - The file type must be changed to f2fs
  - Perhaps also other f2fs-specific options

Bug: 170918499
Test: Pixel4a userdebug build (from build id 6918751)
Signed-off-by: Robin Hsu <robinhsu@google.com>
Change-Id: Id9d67b5cb35dc806e06ff1320e89114abc996a28
2020-12-09 07:24:55 +08:00
Rupert Shuttleworth
729427460b Ensure file permissions are writable before attempting to sign.
Test: Manually using USE_BAZEL=1 use_rbe m dist (fixes a build error).
Change-Id: I1aac185f12ac430514c975103547ce211ea6c99e
2020-12-08 10:03:34 +00:00
Huang Jianan
35f015ea5e calculation partition size use compressed image size
If dynamic partitioning is enabled and the partition size is not set,
du will be used to calculate the partition size.

For compressed file systems, it's better to use the compressed size
to avoid wasting space.

Bug:174816929
Test: erofs image size is smaller than the original file
Change-Id: I1deda85d312c19620680531223fffcfb815e5fd4
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
2020-12-07 07:09:28 +00:00
Huang Jianan
62d926e2fe add erofs to non partition spanning fs
Bug:174816929
Test: sparse image size will be fixed after rebuilding erofs image
Change-Id: I43d7b2c61c57301935981f6f1282afb685cce331
Signed-off-by: Huang Jianan <huangjianan@oppo.com>
2020-12-04 09:08:00 +00:00
Colin Cross
bbc94b0d83 Use jni_libs instead of required for signapk conscrypt JNI
Using jni_libs tells Soong to install the JNI library into
a genrule sandbox alongside the java binary.

Bug: 124313442
Test: m checkbuild
Change-Id: Ia550102c7aa483497f95ac2ea8bb01bce89ae9c1
2020-12-02 11:37:21 -08:00
Colin Cross
40c9513f7f Follow argument changes to RuleBuilder
Pass pctx and ctx to NewRuleBuilder instead of RuleBuilder.Build,
and don't pass ctx to RuleBuilderCommand.BuiltTool.  Follows the
changes in I63e6597e19167393876dc2259d6f521363b7dabc.

Test: m checkbuild
Change-Id: I5d11e07ae1a24a967e379c151f4f5d7d188c6cc0
2020-12-01 16:21:51 -08:00
Daniel Norman
e9fdfb9fea Merge "Runs host_init_verifier on merged target files packages." 2020-11-25 18:13:30 +00:00
Chih-hung Hsieh
5364ffafa9 Merge "Dump a new CSV with warning messages" 2020-11-25 17:38:21 +00:00
Daniel Norman
21c34f78e8 Runs host_init_verifier on merged target files packages.
This verifies the init rc files in the merged result.

Bug: 163089173
Test: test_common.py
Test: Run merge_target_files.py to merge two target-files packages where
      one has init_rc errors. Observe script failure.
Test: Run merge_target_files.py on two good target-files packages,
      observe no failure.
Change-Id: I86c8e5a2bc07c2c1896ac40afd32bc1d055447ee
2020-11-24 17:26:27 +00:00
Saeid Farivar Asanjan
75dc8d2dab Dump a new CSV with warning messages
Bug: 171068870
Test: manual
Change-Id: Ibb528940daf9a6cd99ece8e5a63d67aacdfc131c
2020-11-24 05:46:33 +00:00
Treehugger Robot
84e9bf1a94 Merge "Try to find host tools in the same directory as the caller" 2020-11-24 02:05:39 +00:00
Treehugger Robot
bda655cead Merge "build: make fs_config_generator.py python2 explicitly" 2020-11-23 23:08:22 +00:00
Kelvin Zhang
788055c00b Merge "Add --disable_verity_computation option to ota script" 2020-11-23 19:43:24 +00:00
Kelvin Zhang
caf7bbc39e Add --disable_verity_computation option to ota script
Test: treehugger, generate an OTA with --disable_verity_computation, serve it to
VABC device. Make sure it works

Change-Id: I0a5f3c018727cb3eed3edd004d60d09d13e34039
2020-11-23 13:24:34 -05:00
Jiyong Park
c8c94ac38e Try to find host tools in the same directory as the caller
common.py is used by many python-based host tools. When a host tool
invokes another host tool, it's usually done with the name of the tool,
not the absolute path of the tool. For example, ["cmd", "arg"] instead
of ["out/soong/host/linux-x86/bin/cmd", "arg"].

Previously, the caller of the tool has to teach all the locations of the
sub-tools that the tool will internally use. But this isn't ideal;

1) It's against the abstraction. The existence of the sub tools and their
names are implementation detail of the containing tool. It's also
subject to change.

2) This isn't scalable. Sometimes a host tool invokes a large number of
host tools. Furthermore, the sub tools might invoke other sub-sub tools.
Then the location of the sub-sub-tools had to be known to the top-level
tool.

The idea here is to make use of the fact that

a) dependencies to the sub (and sub-sub) tools are already described in
the Android.bp and

b) the dependencies are guaranteed to be up-to-date and installed to the
host tool directory (out/soong/host/linux-x86/bin) by Soong.

Then by the time a host tool is invoked, all of its sub tools should
be found in the host tool directory. So, when "cmd" is about to be
invoked, common.py first tries to find it from the user-given paths. If
not found there, it falls back to search the directory where the current
tool is located at. Then finally falls back to the original name "cmd"
and expects it to be found under PATH.

Bug: 172414391
Test: m
Change-Id: Id7b44f9021be3bbf0631ddafe382ea3990f7ea74
2020-11-20 10:40:54 +09:00
Daniel Norman
38888d390f Turns on building vbmeta.img when merging if avb_enable=true.
Needed after commit 8218225794
which skips regenerating vbmeta.img if avb_building_vbmeta_image!=true.
Partial builds that disable vbmeta generation do not set this field.

Bug: 169892879
Test: Run merge_target_files.py on builds that have avb_enable=true but
      PRODUCT_BUILD_VBMETA_IMAGE=false. Observe vbmeta.img generation.
Change-Id: Id498dbd28c909e19cd35178b95a0b5dc22a1ac70
2020-11-19 14:51:15 -08:00
Yifan Hong
187e975927 Merge changes from topic "gki_vintf_level"
* changes:
  Pass kernel release file to check_vintf.
  Pass kernel version file to check_vintf.
2020-11-16 23:48:47 +00:00
Treehugger Robot
59dd38cdb0 Merge "Include complete boot image on builds containing gki apex" 2020-11-16 18:04:46 +00:00
Treehugger Robot
fc65231af1 Merge "Support PRODUCT_BUILD_VBMETA_IMAGE for target files" 2020-11-16 13:59:41 +00:00
Kelvin Zhang
072efc92e2 Merge "Allow downgradeable secondary payload" 2020-11-14 03:09:49 +00:00
Yifan Hong
72e78f21b2 Pass kernel version file to check_vintf.
check_vintf now accept a path to a file that contains the kernel
version string. Use it.

Test: m check-vintf-all and manual inspect
Bug: 161317193
Change-Id: I4812c93f352686d73c5832d59e43a297d93e67a2
2020-11-13 18:45:03 -08:00
Fabien Sanglard
3d38ff9f38 Merge "Improve Zipalign test" 2020-11-13 20:43:11 +00:00
Fabien Sanglard
e5fd58a62d Merge "Fix zipalign alignment error" 2020-11-13 20:42:50 +00:00
Bowgo Tsai
8218225794 Support PRODUCT_BUILD_VBMETA_IMAGE for target files
Currently we support skip building vbmeta.img when
PRODUCT_BUILD_VBMETA_IMAGE is set to false, which is used
when generating a system-only or vendor-only build artifacts.

However, when using `make dist` to build target files,
vbmeta.img is still generated. This change fixes this by
passing the related info to misc_info.txt for the release
tool to skip building vbmeta.img when necessary.

To make this happen, a device config should:
 1. Set PRODUCT_BUILD_VBMETA_IMAGE := false
 2. Remove 'vbmeta' from AB_OTA_PARTITIONS:
     AB_OTA_PARTITIONS += \
	 boot \
	 system \
    -    vbmeta \
	 dtbo \
	 product \
	 system_ext \
         vbmeta_system

Bug: 161659370
Test: `make dist` and checks the target file does not include vbmeta.img
Change-Id: Iddca9fe0b171a50a80e5a88aa462e118f18a7e6f
2020-11-13 11:28:17 +08:00
Fabien Sanglard
a720635be2 Fix zipalign alignment error
Problem: Zipalign operates over several false assumptions. First it
assumes that zip entries are in the same order in the body and in
the Central Direcotry. Second, it assumes there are not space
between entries. This makes alignment incorrect when these asserts
are not true.

Solution: Don't align entries by tracking bias based on input zip
entry location. Calculate the expected alignment based on the out-
put zip file and correct with extra padding.

Fixes: 162117652
Test: Units Tests
Change-Id: Ia179338f658cab18a377cba2c7c8e629089a2785
2020-11-11 17:00:22 -08:00
Fabien Sanglard
4b4b495d88 Improve Zipalign test
Problem: Zipalign test invokes process but not verify.
Solution: Invoke both during test.

Test: Unit Test
Bug: NA
Change-Id: If603df301048f4b508e3429c4a8c77339ab351ae
2020-11-11 16:50:18 -08:00
Kelvin Zhang
6cdf39168f Allow downgradeable secondary payload
Test: treehugger
Bug: 172811557
Change-Id: I58f3123b9bc69342427f95250a5ee57ede4ac926
2020-11-11 14:23:00 -05:00
Kelvin Zhang
83ea783146 Filter out ab_partitions in source_info as well
When generating a incremental partial OTA, we need to filter out
partitions in ab_partitions which are not in partial list

Test: Generate a partial incremental OTA
Change-Id: Iff7748ce6181a9a231557de0539004211587232c
2020-11-11 14:23:00 -05:00
Kelvin Zhang
65029a2801 Include complete boot image on builds containing gki apex
Test: treehugger
Bug: 171906589
Change-Id: I231dac425ab14602492346006e331e4666173614
2020-11-11 09:16:32 -05:00
Kelvin Zhang
6f83343e7e Merge "Allow downgradable partial OTA" 2020-11-11 14:05:47 +00:00
Kelvin Zhang
80195724e7 Allow downgradable partial OTA
Cuttlefish doesn't support updatin vendor partition. So in testing we
need to exclude vendor and generate a downgrade partial package.

Test: generate a partial downgrade OTA
Bug: 171999375
Change-Id: I97e450d4063320cf55003a7a5c5ef913c321e067
2020-11-10 09:11:20 -05:00
Treehugger Robot
b65e0b7648 Merge "Add the janitors and someone from Studio." 2020-11-10 08:55:31 +00:00
Elliott Hughes
3fc740b7cb Merge "Run zipalign tests in presubmit." 2020-11-10 00:19:31 +00:00
Elliott Hughes
3d8fb39b0e Add the janitors and someone from Studio.
Studio uses this too, not just the platform build.

Test: treehugger
Change-Id: I65c8a8f150e4d10ca31f67a816c9882d46f08ebf
2020-11-09 14:06:02 -08:00
Treehugger Robot
7bd7db619a Merge "Fix zipalign tests with GetExecutableDirectory" 2020-11-07 23:08:55 +00:00
Fabien Sanglard
6dfc6fb4c4 Fix zipalign tests with GetExecutableDirectory
Test: Self-tested
Bug: NA
Change-Id: Idc15c0e028b74a2b38c26af0e7d4a51f32210145
2020-11-06 17:04:59 -08:00
Treehugger Robot
ba1811bf83 Merge "Checks for APK sharedUserIds that cross partition group boundaries." 2020-11-06 22:29:46 +00:00
Elliott Hughes
c2039151ba Run zipalign tests in presubmit.
Test: treehugger
Change-Id: I2779c04313976d29c29c50920c0b356309c08439
2020-11-05 16:37:40 -08:00
Daniel Norman
d33515623a Checks for APK sharedUserIds that cross partition group boundaries.
This check is used when merging target files to ensure that a merged
build does not contain any APKs that share UID across builds.

Bug: 171431774
Test: test_common
Test: Use merge_target_files.py to merge two partial builds,
      observe no failures for inputs without colliding APKs.
Test: Use merge_target_files.py to merge two partial builds,
      observe failure for inputs that have an APK that shares a
      UID across input partition groups.
Change-Id: I9dc57216882741ae46a99cfd7847f34702c75582
2020-11-05 15:17:05 -08:00
Treehugger Robot
6be3371c23 Merge "Refactor zipalign to allow unit tests" 2020-11-05 19:10:22 +00:00