Merge "Add $(PRODUCT_OUT)/apex to the artifact path whitelist"
diff --git a/core/goma.mk b/core/goma.mk
index f5064e6..c265259 100644
--- a/core/goma.mk
+++ b/core/goma.mk
@@ -16,17 +16,6 @@
# Notice: this works only with Google's Goma build infrastructure.
ifneq ($(filter-out false,$(USE_GOMA)),)
- # Goma requires a lot of processes and file descriptors.
- # TODO(yyanagisawa): move these code to build/soong/uil/build/goma.go
- ifeq ($(shell echo $$(($$(ulimit -u) < 2500 || $$(ulimit -n) < 16000))),1)
- $(warning Max user processes and/or open files are insufficient)
- ifeq ($(shell uname),Darwin)
- $(error See go/ma/how-to-use-goma/how-to-use-goma-for-android to relax the limit)
- else
- $(error Adjust the limit by ulimit -u and ulimit -n)
- endif
- endif
-
ifdef GOMA_DIR
goma_dir := $(GOMA_DIR)
else
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
index 63db564..7c3ac3b 100644
--- a/target/product/base_system.mk
+++ b/target/product/base_system.mk
@@ -118,14 +118,14 @@
libaudioutils \
libbinder \
libbinder_ndk \
- libc \
+ libc.bootstrap \
libcamera2ndk \
libcamera_client \
libcameraservice \
libc_malloc_debug \
libc_malloc_hooks \
libcutils \
- libdl \
+ libdl.bootstrap \
libdrmframework \
libdrmframework_jni \
libEGL \
@@ -145,7 +145,7 @@
libjnigraphics \
libjpeg \
liblog \
- libm \
+ libm.bootstrap \
libmdnssd \
libmedia \
libmedia_jni \
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index f516309..521b319 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -79,22 +79,26 @@
return output.count('\n') * 2
-def GetFilesystemCharacteristics(sparse_image_path):
- """Returns various filesystem characteristics of "sparse_image_path".
+def GetFilesystemCharacteristics(image_path, sparse_image=True):
+ """Returns various filesystem characteristics of "image_path".
Args:
- sparse_image_path: The file to analyze.
+ image_path: The file to analyze.
+ sparse_image: Image is sparse
Returns:
The characteristics dictionary.
"""
- unsparse_image_path = UnsparseImage(sparse_image_path, replace=False)
+ unsparse_image_path = image_path
+ if sparse_image:
+ unsparse_image_path = UnsparseImage(image_path, replace=False)
cmd = ["tune2fs", "-l", unsparse_image_path]
try:
output = common.RunAndCheckOutput(cmd, verbose=False)
finally:
- os.remove(unsparse_image_path)
+ if sparse_image:
+ os.remove(unsparse_image_path)
fs_dict = {}
for line in output.splitlines():
fields = line.split(":")
@@ -414,7 +418,10 @@
"First Pass based on estimates of %d MB and %s inodes.",
size // BYTES_IN_MB, prop_dict["extfs_inode_count"])
BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config)
- fs_dict = GetFilesystemCharacteristics(out_file)
+ sparse_image = False
+ if "extfs_sparse_flag" in prop_dict:
+ sparse_image = True
+ fs_dict = GetFilesystemCharacteristics(out_file, sparse_image)
os.remove(out_file)
block_size = int(fs_dict.get("Block size", "4096"))
free_size = int(fs_dict.get("Free blocks", "0")) * block_size
@@ -428,16 +435,21 @@
else:
size -= free_size
size += reserved_size
+ if reserved_size == 0:
+ # add .2% margin
+ size = size * 1002 // 1000
+ # Use a minimum size, otherwise we will fail to calculate an AVB footer
+ # or fail to construct an ext4 image.
+ size = max(size, 256 * 1024)
if block_size <= 4096:
size = common.RoundUpTo4K(size)
else:
size = ((size + block_size - 1) // block_size) * block_size
- # Use a minimum size, otherwise we will fail to calculate an AVB footer
- # or fail to construct an ext4 image.
- size = max(size, 256 * 1024)
extfs_inode_count = prop_dict["extfs_inode_count"]
inodes = int(fs_dict.get("Inode count", extfs_inode_count))
inodes -= int(fs_dict.get("Free inodes", "0"))
+ # add .2% margin
+ inodes = inodes * 1002 // 1000
prop_dict["extfs_inode_count"] = str(inodes)
prop_dict["partition_size"] = str(size)
logger.info(