Commit Graph

2796 Commits

Author SHA1 Message Date
Tao Bao ab9a358801 Merge "Revise stash for BBOTAs when needed." 2015-08-18 16:59:05 +00:00
Dan Willemsen 05d97fe723 Merge "Remove legacy windows platform build support" 2015-08-18 04:31:07 +00:00
Dan Willemsen e65107508a Merge "Use repeatable timestamps" 2015-08-18 03:30:11 +00:00
Dan Willemsen 145ae32069 Remove legacy windows platform build support
We still support HOST_OS=windows for the SDK host tools cross-builds, but
that's only when USE_MINGW is set when running under linux.

Change-Id: I37da87dc9fbbd69ba10ce4d7f2668ab3f6482d92
2015-08-17 12:35:04 -07:00
leozwang aa6c1a1445 Add an option to include a full bootloader in incremental OTA.
Bug: 23101469
Change-Id: Iac466b83f789f10d26e8d289dce766cf0d05148b
(cherry picked from commit c1324751e79b23a63ea494f4bc784446c8f32435)
2015-08-17 10:34:01 -07:00
Tao Bao 82c47981bd Revise stash for BBOTAs when needed.
When generating incremental BBOTAs (v2 and above), we need to ensure
that the needed runtime stash is below the given threshold. If it's
running out of space on /cache, we replace the command that uses a
stash with a "new" command instead.

This may increase the OTA package size, since it is carrying more full
blocks instead of patches. It gets even worse for large files that span
a number of blocks, because currently we will store all the blocks for
the file as "new" blocks if stashing cannot be satisfied. We may further
optimize by splitting them into smaller chunks so that most of them can
still be stashed.

Bug: 22430577
Change-Id: I5a49e361adc7d3d41de2e9c08ee9b08c1e6c091a
2015-08-17 10:21:49 -07:00
Tao Bao bb625d2099 Free the stash after its use in BBOTA v2.
In BBOTA v2, the stash size computation is inaccurate. A stash will be
used only once, so we deduct its size from stashed_blocks right after
its use. However, the stash doesn't actually get freed until being
overwritten by another stash or destroyed at the end of an update. This
leads to OTA failures due to insufficient space on /cache. This CL
changes the BBOTA v2 script to generate an explicit free right after
its use.

Bug: 23119955
Change-Id: Icdd8352bb0ff778945937c870990a888c7a4d38b
2015-08-13 14:44:38 -07:00
Nick Kralevich 5f79bcdd07 Merge changes from topic 'file_contexts.bin'
* changes:
  build: switch over to file_contexts.bin only
  Update embedded.mk to support file_contexts.bin
2015-08-12 23:46:28 +00:00
Dan Willemsen ccc933e97b Use repeatable timestamps
This moves all of the date references under build/ to using a single
datetime that can be set manually using BUILD_DATETIME.

It also adds an option, OVERRIDE_C_DATE_TIME, that if set to true, will
redefine __DATE__ and __TIME__ for all C/C++ files so that it matches
BUILD_DATETIME.

Bug: 23117013
Change-Id: I7c17a32b794a5adf40b9cd69136fb0ff9f6084ec
2015-08-12 00:02:20 -07:00
Gina Dimino 8f301ff10d Merge "Docs: Rename content-footer-text plus remove whitespace." 2015-08-12 03:05:59 +00:00
Dan Willemsen 608aa91db7 Merge "Revert "Use repeatable timestamps"" 2015-08-12 01:02:19 +00:00
Dan Willemsen 92026f2d36 Revert "Use repeatable timestamps"
OSX `date` doesn't understand -d

This reverts commit 13ba6e00f4.

Change-Id: I5970032ff02cc07bd3b087e1eeb5f19b1e4194b4
2015-08-12 01:00:19 +00:00
Dan Willemsen 671b8ff545 Merge "Use repeatable timestamps" 2015-08-12 00:49:26 +00:00
Dan Willemsen 13ba6e00f4 Use repeatable timestamps
This moves all of the date references under build/ to using a single
datetime that can be set manually using BUILD_DATETIME.

It also adds an option, OVERRIDE_C_DATE_TIME, that if set to true, will
redefine __DATE__ and __TIME__ for all C/C++ files so that it matches
BUILD_DATETIME.

Bug: 23117013
Change-Id: I880ef103a26bca86bd7bf42d58e62e740a6228c8
2015-08-11 17:08:03 -07:00
Tao Bao 575d68a48e Change the cache partition size check into warnings.
For some old builds, we may not define cache partition size. Change the
exception into a warning to make the script backward compatible.

Change-Id: Ie94c7fbb1a9f3a7db3f16e8d845e493a534aac5b
2015-08-07 19:49:45 -07:00
Gina Dimino d983a29407 Docs: Rename content-footer-text plus remove whitespace.
Change-Id: I655874790dbc5a2dd2fa2611bc63ca00a1953fdc
2015-08-06 13:48:23 -07:00
Tao Bao 7a5bf8a645 releasetools: Support packaging for system_root_image.
For system images that contain the root directory, we need to find the
root directory at ROOT/ instead of BOOT/RAMDISK/.

Change-Id: Ica345c8b1b03475f8ac6c44fd576045fcf17c882
2015-08-05 16:28:55 -07:00
Stephen Smalley d3a803e668 build: switch over to file_contexts.bin only
Change all uses of the file_contexts file to use the
file_contexts.bin file instead.

Depends on
   I75a781100082c23536f70ce3603f7de42408b5ba
   I43806d564b83d57f05f5c36c8eba7b1ff4831b04
   Id560d093440a2aba99cef28c20133b35feebf950
   I15660f4b3e4c5cb8ae0ec1498c74d6fcbb9a0400

Change-Id: Iaf8c4b2e420f610425a07f48db7af32bda3f5b3a
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2015-08-04 14:59:06 -04:00
Daniel Rosenberg 22354d3c49 Merge "Add support for system images that contain the root directory" 2015-08-01 00:10:02 +00:00
Daniel Rosenberg 46afd7f981 Merge "Add ro.build.system_root_image" 2015-08-01 00:05:05 +00:00
Daniel Rosenberg e6853b0d63 Add support for system images that contain the root directory
When the root directory is included in system, the assumption that
system is mounted at /system breaks down. Redirect /system to /
in that case.

Change-Id: I8031b32d7cb9ca699c1cc22939e28afce9d1c847
2015-07-31 16:52:21 -07:00
Daniel Rosenberg 59156a6b7d Add ro.build.system_root_image
ro.build.system_root_image is true if the root directory is built
into the system image.

Change-Id: I17208ebd004c63aebb09db6c3e5f795619e73bd2
2015-07-31 16:52:21 -07:00
Gina Dimino 44c5e346cb Merge "Docs: Add Google Feedback link to the footer for SAC pages." 2015-07-31 18:47:20 +00:00
Gina Dimino f9a5ae53ce Docs: Add Google Feedback link to the footer for SAC pages.
Bug: 8906018
Change-Id: Id53b8a4421e01cef0ea1609efde1e29eb2a50f47
2015-07-30 13:54:48 -07:00
Simon Wilson 37700c9ad1 Merge "Add compressor options for squashfs system images" 2015-07-29 21:35:57 +00:00
Tao Bao dd24da9ec9 Read fstab from the source build.
When creating incremental OTAs, we should always use the fstab from the
source build instead of the target.

Bug: 21948974
Change-Id: Iff44130f88a679b253ea1adcfac4ed8566ce9cc7
2015-07-29 14:11:55 -07:00
Tao Bao f2cffbddb9 Support systems that use a full copy of recovery image.
If BOARD_USES_FULL_RECOVERY_IMAGE == true, a full copy of recovery
image will be carried as /system/etc/recovery.img instead of a patch
at /system/recovery_from_boot.p.

Bug: 22641135
Change-Id: Ie271d3e2d55d7b003f667ac5b44203d69b23c63b
(cherry picked from commit 8beab69bd5)
2015-07-28 12:20:36 -07:00
Tao Bao 84e7568b1f Override properties that point to out/ directory.
A few properties are stored as links to the files in the out/
directory, which are no longer available when (re)packing from
target_files zip. Redirect those properties to the actual files in
the unzipped directory when repacking.

Change-Id: I18e930cbea224ab9c6db8d4e721b1c266a671db6
2015-07-19 08:48:09 -07:00
Tao Bao 8dcf738234 Assert the stash size when generating OTAs.
With block-based OTA v2 and v3, it requires stash space on the /cache
partition to back up blocks during an update. We need to ensure that
it doesn't exceed the partition size. Since there might be other files
on /cache as well, we use cache_size * threshold as the maximum allowed
size. The threshold defaults to 0.8, which can be overridden by command
line option '--stash_threshold'.

Change-Id: I5c2e353ea4716328d6cdc6a7f758520de8d88b8e
(cherry picked from commit 23ac404212)
2015-07-14 13:36:50 -07:00
Tao Bao 2a410587e8 Fix the permission in common.ZipWriteStr().
common.ZipWriteStr() should set a default file permission to 0o100644
instead of 0o644.

Change-Id: I8c89d8442b095b56ad3a0d47afdfa73ce55ad0c8
2015-07-10 17:45:09 -07:00
Tao Bao 2c15d9eefe Pack file_contexts into target_files zip.
file_contexts (specified by SELINUX_FC) is needed both when building
and (re)packaging. We used to use the copy in out/ when building, and
looked for the copy in BOOT/RAMDISK/ when packaging from target_files
zip. With system_root_image enabled, the file_contexts needed for
building and packaging might be different from the one on device. So
we explicitly pack the file as META/file_contexts in target_files zip.

Also refactor out the overriding of selinux_fc property into
common.LoadInfoDict().

Change-Id: I94f9ea6671b3792c12c1c21573840743d63da39a
(cherry picked from commit aa7318c384)
2015-07-10 14:21:16 -07:00
Tao Bao e9b619108d Zero out blocks that may be touched by dm-verity.
dm-verity may touch some blocks that are not in the care_map due to
block device read-ahead. It will fail if such blocks contain
non-zeroes. As a workaround, we mark them as extended blocks and
zero out explicitly to avoid dm-verity failures.

Bug: 20881595
Change-Id: Id097138bfd065c84eac088b3ad49758010b2927b
(cherry picked from commit 2fd2c9bfd6)
2015-07-10 13:50:24 -07:00
Tao Bao e246964b8f Merge "Scan all init.*.rc files for flash_recovery service." 2015-07-08 17:22:36 +00:00
Tao Bao 9f0c8dfaf1 Scan all init.*.rc files for flash_recovery service.
Clockwork builds may rename init.rc to init.core.rc. Change the OTA
script to scan all init.*.rc files to determine the proper location for
install-recovery.sh.

Bug: 22128990
Change-Id: Icad3497d1663e074b938919b40fc239c84fbeb2b
(cherry picked from commit 610754e5ad)
2015-07-08 10:20:39 -07:00
Simon Wilson 011ea06db7 Add compressor options for squashfs system images
Change-Id: I2a75f8754273f6e00b96ba6aca6741c4388f5da8
(cherry picked from commit f86e7eeabc)
2015-07-07 11:41:20 -07:00
Ying Wang 2ffb3147bc fix up ota_from_target_files symlink detection.
Change-Id: I10b668096d4e61e75473dd805f96387049f29b79
2015-07-06 14:02:01 -07:00
Tao Bao 3806c231a9 Fix OTA scripts to generate incremental BBOTA with OEM property.
Bug: 21803136
Change-Id: I3a45e8aea0b4f4f4f2acb4c9c8a7fad7a014680c
2015-07-05 21:08:33 -07:00
Tao Bao 4e66343b2b Retry adjusting the size computation for reserved blocks.
Due to the change in https://lwn.net/Articles/546473/, kernel reserves a
few extra blocks (lesser of 2% and 4096 blocks) on ext4 FS which leads to
OTA update failures. Adjust the size computation if the device has
BOARD_HAS_EXT4_RESERVED_BLOCKS := true.

It amends the last attemp in [1]. Now it computes the used blocks from the
make_ext4fs output, instead of altering its argument.

[1]: commit efbb5d2e69.

Bug: 21522719
Bug: 22023465
Bug: 22174684
Change-Id: Iaae6507f6de68a5892f2e3035d330039287b4492
(cherry picked from commit c7a6f1e4f8)
2015-06-30 12:17:28 -07:00
Tao Bao a89781204e sparse_img.py: Don't write empty map groups.
In certain cases, we may have no mapping of ZERO or NONZERO blocks in
the image (such as squashfs at the moment). Don't write those groups if
they are empty.

Change-Id: I82aa05fbbd79130b08868585edd5298e531c4f5a
2015-06-27 09:21:31 -07:00
Tao Bao c94a705f44 Merge "Use fstab in the source build" 2015-06-26 22:57:09 +00:00
Tao Bao dd77b561e5 Merge "Support SELinux context label when mounting" 2015-06-26 22:56:57 +00:00
Tao Bao 34b47bf42b Use fstab in the source build
When generating incremental OTAs, we should use the fstab in the source
build instead of the target one. Similarly for recovery_mount_options.

Bug: 22011892
Change-Id: Ia02584c71af7d47835b1f62e7daa46f27940a545
(cherry picked from commit bebd3cfbf9)
2015-06-26 15:53:16 -07:00
Ying Wang 8f180b904f Merge "Create userdata.img with real data when SANITIZE_TARGET=address." 2015-06-25 21:29:52 +00:00
Ying Wang 2a04839aec Create userdata.img with real data when SANITIZE_TARGET=address.
Bug: 21785137
Change-Id: Ie0c36988759fe07419ad29bab5a71cdd0d992d2a
2015-06-25 14:29:04 -07:00
Mohamad Ayyash 042e851999 Merge "build_image.py: Make sparse squashfs images" 2015-06-24 22:01:00 +00:00
Mohamad Ayyash 2cd51cc711 build_image.py: Make sparse squashfs images
Change-Id: Iea0399868a9406f9929d8176d61d5698a2043697
Signed-off-by: Mohamad Ayyash <mkayyash@google.com>
2015-06-24 11:08:00 -07:00
Tao Bao 109555753f Fix the error in sparse_img.py
Bug: 22046423
Change-Id: I0796e14df2b523570f0c485d146273f5e5aa5494
(cherry picked from commit 2b4ff174ff)
2015-06-23 17:44:48 -07:00
Dan Albert 944fc40eda Stop disallowing sanitizers.
Change-Id: I641cb3fe998184f8926324e3365a7a99d87263df
2015-06-16 22:20:19 -07:00
Tao Bao df06e96826 Support SELinux context label when mounting
If there is a SELinux context label in the recovery.fstab, we should
honor that when mounting the partition.

Bug: 19764039
Change-Id: Ic80a3377a5a94c9d10dd464eb1257b157a947510
(cherry picked from commit 548eb76c8f)
2015-06-10 16:20:18 -07:00
Ying Wang 4540a85dd4 Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
   PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
   Each makefile configures an image.
   For image configuration makefile foo/bar/xyz.mk, the built image
   file name
   will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
  - CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
    etc.
  - CUSTOM_IMAGE_PARTITION_SIZE
  - CUSTOM_IMAGE_FILE_SYSTEM_TYPE
  - CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
    accepted by BuildImage() in tools/releasetools/build_image.py.
  - CUSTOM_IMAGE_MODULES, a list of module names you want to include
    in the image; Not only the module itself will be installed to proper
    path in the image, you can also piggyback additional files/directories
    with the module's LOCAL_PICKUP_FILES.
  - CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
    the image. <dest> is relativ to the root of the image.

To build all those images, run "make custom_images".

Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9)
2015-06-03 09:56:29 -07:00