forked from openkylin/platform_build
Move forward installed-files.txt in the dependency graph
Bug: 5265104 - Move installed-files.txt forward to ahead of system.img in the dependency graph, so that even if the system.img fails to build due to too large size we can still get the size stats. - Change the script tools/fileslist.py to sort items in decreasing size. Change-Id: I5913bc51971e341ffbfcf3fa449c987f126e409b
This commit is contained in:
parent
44145f5b7e
commit
e5e8c5f218
|
@ -590,14 +590,6 @@ ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
|
|||
INTERNAL_USERIMAGES_DEPS := $(MKEXTUSERIMG) $(MAKE_EXT4FS)
|
||||
INTERNAL_USERIMAGES_BINARY_PATHS := $(sort $(dir $(INTERNAL_USERIMAGES_DEPS)))
|
||||
|
||||
# Calculate size of all files for device image and report on filesizes
|
||||
# $(1): src directory
|
||||
define calculate-userimage-ext-size
|
||||
@echo Calculating image size...
|
||||
@find $(1) -type f | xargs du -k | sort -gr > $(PRODUCT_OUT)/imagesize-report.txt
|
||||
@du -s -h -k $(1)
|
||||
endef
|
||||
|
||||
# $(1): src directory
|
||||
# $(2): output file
|
||||
# $(3): mount point
|
||||
|
@ -731,9 +723,6 @@ endif
|
|||
# -----------------------------------------------------------------
|
||||
# system image
|
||||
#
|
||||
systemimage_intermediates := \
|
||||
$(call intermediates-dir-for,PACKAGING,systemimage)
|
||||
BUILT_SYSTEMIMAGE := $(systemimage_intermediates)/system.img
|
||||
|
||||
INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \
|
||||
$(ALL_PREBUILT) \
|
||||
|
@ -741,12 +730,38 @@ INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \
|
|||
$(ALL_GENERATED_SOURCES) \
|
||||
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||
|
||||
FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS)
|
||||
# -----------------------------------------------------------------
|
||||
# installed file list
|
||||
# Depending on anything that $(BUILT_SYSTEMIMAGE) depends on.
|
||||
# We put installed-files.txt ahead of image itself in the dependency graph
|
||||
# so that we can get the size stat even if the build fails due to too large
|
||||
# system image.
|
||||
INSTALLED_FILES_FILE := $(PRODUCT_OUT)/installed-files.txt
|
||||
$(INSTALLED_FILES_FILE): $(FULL_SYSTEMIMAGE_DEPS)
|
||||
@echo Installed file list: $@
|
||||
@mkdir -p $(dir $@)
|
||||
@rm -f $@
|
||||
$(hide) build/tools/fileslist.py $(TARGET_OUT) > $@
|
||||
|
||||
.PHONY: installed-file-list
|
||||
installed-file-list: $(INSTALLED_FILES_FILE)
|
||||
ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
|
||||
$(call dist-for-goals, sdk win_sdk, $(INSTALLED_FILES_FILE))
|
||||
endif
|
||||
ifneq ($(filter sdk_addon,$(MAKECMDGOALS)),)
|
||||
$(call dist-for-goals, sdk_addon, $(INSTALLED_FILES_FILE))
|
||||
endif
|
||||
|
||||
systemimage_intermediates := \
|
||||
$(call intermediates-dir-for,PACKAGING,systemimage)
|
||||
BUILT_SYSTEMIMAGE := $(systemimage_intermediates)/system.img
|
||||
|
||||
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
|
||||
## generate an ext image
|
||||
# $(1): output file
|
||||
define build-systemimage-target
|
||||
@echo "Target system fs image: $(1)"
|
||||
$(call calculate-userimage-ext-size,$(TARGET_OUT))
|
||||
$(call build-userimage-ext-target,$(TARGET_OUT),$(1),system,$(INTERNAL_USERIMAGES_EXT_VARIANT),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
|
||||
endef
|
||||
|
||||
|
@ -761,7 +776,7 @@ define build-systemimage-target
|
|||
endef
|
||||
endif # INTERNAL_USERIMAGES_USE_EXT
|
||||
|
||||
$(BUILT_SYSTEMIMAGE): $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS)
|
||||
$(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE)
|
||||
$(call build-systemimage-target,$@)
|
||||
|
||||
INSTALLED_SYSTEMIMAGE := $(PRODUCT_OUT)/system.img
|
||||
|
@ -1158,26 +1173,6 @@ endif # TARGET_NO_KERNEL != true
|
|||
endif # TARGET_DEVICE != generic*
|
||||
endif # TARGET_PRODUCT != sdk
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# installed file list
|
||||
# Depending on $(INSTALLED_SYSTEMIMAGE) ensures that it
|
||||
# gets the DexOpt one if we're doing that.
|
||||
INSTALLED_FILES_FILE := $(PRODUCT_OUT)/installed-files.txt
|
||||
$(INSTALLED_FILES_FILE): $(INSTALLED_SYSTEMIMAGE)
|
||||
@echo Installed file list: $@
|
||||
@mkdir -p $(dir $@)
|
||||
@rm -f $@
|
||||
$(hide) build/tools/fileslist.py $(TARGET_OUT) $(TARGET_OUT_DATA) > $@
|
||||
|
||||
.PHONY: installed-file-list
|
||||
installed-file-list: $(INSTALLED_FILES_FILE)
|
||||
ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
|
||||
$(call dist-for-goals, sdk win_sdk, $(INSTALLED_FILES_FILE))
|
||||
endif
|
||||
ifneq ($(filter sdk_addon,$(MAKECMDGOALS)),)
|
||||
$(call dist-for-goals, sdk_addon, $(INSTALLED_FILES_FILE))
|
||||
endif
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# A zip of the tests that are built when running "make tests".
|
||||
# This is very similar to BUILT_TARGET_FILES_PACKAGE, but we
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
import os, sys
|
||||
import operator, os, sys
|
||||
|
||||
def get_file_size(path):
|
||||
st = os.lstat(path)
|
||||
|
@ -37,9 +37,9 @@ def main(argv):
|
|||
output.append(row)
|
||||
except os.error:
|
||||
pass
|
||||
output.sort(key=operator.itemgetter(0), reverse=True)
|
||||
for row in output:
|
||||
print "%12d %s" % row
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
||||
|
||||
|
|
Loading…
Reference in New Issue