Loading Changes.md +1 −13 Original line number Diff line number Diff line # Build System Changes for Android.mk/Android.bp Writers ## Partitions are no longer affected by previous builds Partition builds used to include everything in their staging directories, and building an individual module will install it to the staging directory. Thus, previously, `m mymodule` followed by `m` would cause `mymodule` to be presinstalled on the device, even if it wasn't listed in `PRODUCT_PACKAGES`. This behavior has been changed, and now the partition images only include what they'd have if you did a clean build. This behavior can be disabled by setting the `BUILD_BROKEN_INCORRECT_PARTITION_IMAGES` environment variable. # Build System Changes for Android.mk Writers ## Perform validation of Soong plugins Loading Loading @@ -40,7 +29,6 @@ overridden by setting the `BUILD_BROKEN_USES_SOONG_PYTHON2_MODULES` product conf variable to `true`. Python 2 is slated for complete removal in V. ## Stop referencing sysprop_library directly from cc modules For the migration to Bazel, we are no longer mapping sysprop_library targets Loading core/Makefile +25 −74 Original line number Diff line number Diff line Loading @@ -3425,22 +3425,14 @@ $(eval $(call declare-0p-target,$(INSTALLED_FILES_JSON))) .PHONY: installed-file-list installed-file-list: $(INSTALLED_FILES_FILE) systemimage_intermediates :=$= $(call intermediates-dir-for,PACKAGING,systemimage) BUILT_SYSTEMIMAGE :=$= $(systemimage_intermediates)/system.img systemimage_intermediates := \ $(call intermediates-dir-for,PACKAGING,systemimage) BUILT_SYSTEMIMAGE := $(systemimage_intermediates)/system.img # Used by the bazel sandwich to request the staging dir be built $(systemimage_intermediates)/staging_dir.stamp: $(FULL_SYSTEMIMAGE_DEPS) touch $@ define write-file-lines $(1): @echo Writing $$@ rm -f $$@ echo -n > $$@ $$(foreach f,$(2),echo "$$(f)" >> $$@$$(newline)) endef # $(1): output file define build-systemimage-target @echo "Target system fs image: $(1)" Loading @@ -3449,19 +3441,16 @@ define build-systemimage-target skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(systemimage_intermediates)/file_list.txt \ $(TARGET_OUT) $(systemimage_intermediates)/system_image_info.txt $(1) $(TARGET_OUT) \ || ( mkdir -p $${DIST_DIR}; \ cp $(INSTALLED_FILES_FILE) $${DIST_DIR}/installed-files-rescued.txt; \ exit 1 ) endef $(eval $(call write-file-lines,$(systemimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT)/,,$(filter $(TARGET_OUT)/%,$(FULL_SYSTEMIMAGE_DEPS))))) ifeq ($(BOARD_AVB_ENABLE),true) $(BUILT_SYSTEMIMAGE): $(BOARD_AVB_SYSTEM_KEY_PATH) endif $(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE) $(systemimage_intermediates)/file_list.txt $(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE) $(call build-systemimage-target,$@) $(call declare-1p-container,$(BUILT_SYSTEMIMAGE),system/extras) Loading Loading @@ -3517,7 +3506,7 @@ SYSTEM_NOTICE_DEPS += $(INSTALLED_SYSTEMIMAGE_TARGET) .PHONY: systemimage-nodeps snod systemimage-nodeps snod: $(filter-out systemimage-nodeps snod,$(MAKECMDGOALS)) \ | $(INTERNAL_USERIMAGES_DEPS) $(systemimage_intermediates)/file_list.txt | $(INTERNAL_USERIMAGES_DEPS) @echo "make $@: ignoring dependencies" $(call build-systemimage-target,$(INSTALLED_SYSTEMIMAGE_TARGET)) $(hide) $(call assert-max-image-size,$(INSTALLED_SYSTEMIMAGE_TARGET),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)) Loading Loading @@ -3558,7 +3547,6 @@ define build-userdataimage-target $(call generate-image-prop-dictionary, $(userdataimage_intermediates)/userdata_image_info.txt,userdata,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(userdataimage_intermediates)/file_list.txt \ $(TARGET_OUT_DATA) $(userdataimage_intermediates)/userdata_image_info.txt \ $(INSTALLED_USERDATAIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_PARTITION_SIZE)) Loading @@ -3569,10 +3557,7 @@ INSTALLED_USERDATAIMAGE_TARGET := $(BUILT_USERDATAIMAGE_TARGET) INSTALLED_USERDATAIMAGE_TARGET_DEPS := \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_USERDATAIMAGE_FILES) $(eval $(call write-file-lines,$(userdataimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_DATA)/,,$(filter $(TARGET_OUT_DATA)/%,$(INSTALLED_USERDATAIMAGE_TARGET_DEPS))))) $(INSTALLED_USERDATAIMAGE_TARGET): $(INSTALLED_USERDATAIMAGE_TARGET_DEPS) $(userdataimage_intermediates)/file_list.txt $(INSTALLED_USERDATAIMAGE_TARGET): $(INSTALLED_USERDATAIMAGE_TARGET_DEPS) $(build-userdataimage-target) $(call declare-1p-container,$(INSTALLED_USERDATAIMAGE_TARGET),) Loading @@ -3581,7 +3566,7 @@ $(call declare-container-license-deps,$(INSTALLED_USERDATAIMAGE_TARGET),$(INSTAL UNMOUNTED_NOTICE_VENDOR_DEPS+= $(INSTALLED_USERDATAIMAGE_TARGET) .PHONY: userdataimage-nodeps userdataimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(userdataimage_intermediates)/file_list.txt userdataimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-userdataimage-target) endif # BUILDING_USERDATA_IMAGE Loading Loading @@ -3617,17 +3602,14 @@ define build-cacheimage-target $(call generate-image-prop-dictionary, $(cacheimage_intermediates)/cache_image_info.txt,cache,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(cacheimage_intermediates)/file_list.txt \ $(TARGET_OUT_CACHE) $(cacheimage_intermediates)/cache_image_info.txt \ $(INSTALLED_CACHEIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_CACHEIMAGE_TARGET),$(BOARD_CACHEIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(cacheimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_CACHE)/,,$(filter $(TARGET_OUT_CACHE)/%,$(INTERNAL_CACHEIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_CACHEIMAGE_TARGET := $(BUILT_CACHEIMAGE_TARGET) $(INSTALLED_CACHEIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_CACHEIMAGE_FILES) $(cacheimage_intermediates)/file_list.txt $(INSTALLED_CACHEIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_CACHEIMAGE_FILES) $(build-cacheimage-target) $(call declare-1p-container,$(INSTALLED_CACHEIMAGE_TARGET),) Loading @@ -3636,7 +3618,7 @@ $(call declare-container-license-deps,$(INSTALLED_CACHEIMAGE_TARGET),$(INTERNAL_ UNMOUNTED_NOTICE_VENDOR_DEPS+= $(INSTALLED_CACHEIMAGE_TARGET) .PHONY: cacheimage-nodeps cacheimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(cacheimage_intermediates)/file_list.txt cacheimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-cacheimage-target) else # BUILDING_CACHE_IMAGE Loading Loading @@ -3701,19 +3683,16 @@ define build-systemotherimage-target $(call generate-image-prop-dictionary, $(systemotherimage_intermediates)/system_other_image_info.txt,system,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(systemotherimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_OTHER) $(systemotherimage_intermediates)/system_other_image_info.txt \ $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_SYSTEMOTHERIMAGE_TARGET),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(systemotherimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_OTHER)/,,$(filter $(TARGET_OUT_SYSTEM_OTHER)/%,$(INTERNAL_SYSTEMOTHERIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEMOTHERIMAGE_TARGET := $(BUILT_SYSTEMOTHERIMAGE_TARGET) ifneq (true,$(SANITIZE_LITE)) # Only create system_other when not building the second stage of a SANITIZE_LITE build. $(INSTALLED_SYSTEMOTHERIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEMOTHER) $(systemotherimage_intermediates)/file_list.txt $(INSTALLED_SYSTEMOTHERIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEMOTHER) $(build-systemotherimage-target) $(call declare-1p-container,$(INSTALLED_SYSTEMOTHERIMAGE_TARGET),) Loading @@ -3723,7 +3702,7 @@ UNMOUNTED_NOTICE_DEPS += $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) endif .PHONY: systemotherimage-nodeps systemotherimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(systemotherimage_intermediates)/file_list.txt systemotherimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-systemotherimage-target) endif # BUILDING_SYSTEM_OTHER_IMAGE Loading Loading @@ -3804,22 +3783,18 @@ define build-vendorimage-target $(call generate-image-prop-dictionary, $(vendorimage_intermediates)/vendor_image_info.txt,vendor,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(vendorimage_intermediates)/file_list.txt \ $(TARGET_OUT_VENDOR) $(vendorimage_intermediates)/vendor_image_info.txt \ $(INSTALLED_VENDORIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_VENDORIMAGE_TARGET) $(RECOVERY_FROM_BOOT_PATCH),$(BOARD_VENDORIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(vendorimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_VENDOR)/,,$(filter $(TARGET_OUT_VENDOR)/%,$(INTERNAL_VENDORIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_VENDORIMAGE_TARGET := $(BUILT_VENDORIMAGE_TARGET) $(INSTALLED_VENDORIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_VENDORIMAGE_FILES) \ $(INSTALLED_FILES_FILE_VENDOR) \ $(RECOVERY_FROM_BOOT_PATCH) \ $(vendorimage_intermediates)/file_list.txt $(RECOVERY_FROM_BOOT_PATCH) $(build-vendorimage-target) VENDOR_NOTICE_DEPS += $(INSTALLED_VENDORIMAGE_TARGET) Loading @@ -3828,7 +3803,7 @@ $(call declare-container-license-metadata,$(INSTALLED_VENDORIMAGE_TARGET),legacy $(call declare-container-license-deps,$(INSTALLED_VENDORIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDORIMAGE_FILES) $(RECOVERY_FROM_BOOT_PATH),$(PRODUCT_OUT)/:/) .PHONY: vendorimage-nodeps vnod vendorimage-nodeps vnod: | $(INTERNAL_USERIMAGES_DEPS) $(vendorimage_intermediates)/file_list.txt vendorimage-nodeps vnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-vendorimage-target) .PHONY: sync_vendor Loading Loading @@ -3874,21 +3849,17 @@ define build-productimage-target $(call generate-image-prop-dictionary, $(productimage_intermediates)/product_image_info.txt,product,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(productimage_intermediates)/file_list.txt \ $(TARGET_OUT_PRODUCT) $(productimage_intermediates)/product_image_info.txt \ $(INSTALLED_PRODUCTIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_PRODUCTIMAGE_TARGET),$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(productimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_PRODUCT)/,,$(filter $(TARGET_OUT_PRODUCT)/%,$(INTERNAL_PRODUCTIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_PRODUCTIMAGE_TARGET := $(BUILT_PRODUCTIMAGE_TARGET) $(INSTALLED_PRODUCTIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_PRODUCTIMAGE_FILES) \ $(INSTALLED_FILES_FILE_PRODUCT) \ $(productimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_PRODUCT) $(build-productimage-target) PRODUCT_NOTICE_DEPS += $(INSTALLED_PRODUCTIMAGE_TARGET) Loading @@ -3897,7 +3868,7 @@ $(call declare-1p-container,$(INSTALLED_PRODUCTIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_PRODUCTIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_PRODUCTIMAGE_FILES) $(INSTALLED_FILES_FILE_PRODUCT),$(PRODUCT_OUT)/:/) .PHONY: productimage-nodeps pnod productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(productimage_intermediates)/file_list.txt productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-productimage-target) .PHONY: sync_product Loading Loading @@ -3939,7 +3910,6 @@ define build-system_extimage-target $(call generate-image-prop-dictionary, $(system_extimage_intermediates)/system_ext_image_info.txt,system_ext, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(system_extimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_EXT) \ $(system_extimage_intermediates)/system_ext_image_info.txt \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ Loading @@ -3947,15 +3917,12 @@ define build-system_extimage-target $(call assert-max-image-size,$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET),$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(system_extimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_EXT)/,,$(filter $(TARGET_OUT_SYSTEM_EXT)/%,$(INTERNAL_SYSTEM_EXTIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEM_EXTIMAGE_TARGET := $(BUILT_SYSTEM_EXTIMAGE_TARGET) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_SYSTEM_EXTIMAGE_FILES) \ $(INSTALLED_FILES_FILE_SYSTEM_EXT) \ $(system_extimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_SYSTEM_EXT) $(build-system_extimage-target) SYSTEM_EXT_NOTICE_DEPS += $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) Loading @@ -3964,7 +3931,7 @@ $(call declare-1p-container,$(INSTALLED_SYSTEM_EXTIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_SYSTEM_EXTIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEM_EXTIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEM_EXT),$(PRODUCT_OUT)/:/) .PHONY: systemextimage-nodeps senod systemextimage-nodeps senod: | $(INTERNAL_USERIMAGES_DEPS) $(system_extimage_intermediates)/file_list.txt systemextimage-nodeps senod: | $(INTERNAL_USERIMAGES_DEPS) $(build-system_extimage-target) .PHONY: sync_system_ext Loading Loading @@ -4027,21 +3994,17 @@ define build-odmimage-target skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(odmimage_intermediates)/file_list.txt \ $(TARGET_OUT_ODM) $(odmimage_intermediates)/odm_image_info.txt \ $(INSTALLED_ODMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),$(BOARD_ODMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(odmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_ODM)/,,$(filter $(TARGET_OUT_ODM)/%,$(INTERNAL_ODMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_ODMIMAGE_TARGET := $(BUILT_ODMIMAGE_TARGET) $(INSTALLED_ODMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_ODMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_ODM) \ $(odmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_ODM) $(build-odmimage-target) ODM_NOTICE_DEPS += $(INSTALLED_ODMIMAGE_TARGET) Loading @@ -4050,7 +4013,7 @@ $(call declare-1p-container,$(INSTALLED_ODMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_ODMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODMIMAGE_FILES) $(INSTALLED_FILES_FILE_ODM),$(PRODUCT_OUT)/:/) .PHONY: odmimage-nodeps onod odmimage-nodeps onod: | $(INTERNAL_USERIMAGES_DEPS) $(odmimage_intermediates)/file_list.txt odmimage-nodeps onod: | $(INTERNAL_USERIMAGES_DEPS) $(build-odmimage-target) .PHONY: sync_odm Loading Loading @@ -4093,21 +4056,17 @@ define build-vendor_dlkmimage-target vendor_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(vendor_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_VENDOR_DLKM) $(vendor_dlkmimage_intermediates)/vendor_dlkm_image_info.txt \ $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),$(BOARD_VENDOR_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(vendor_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_VENDOR_DLKM)/,,$(filter $(TARGET_OUT_VENDOR_DLKM)/%,$(INTERNAL_VENDOR_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_VENDOR_DLKMIMAGE_TARGET := $(BUILT_VENDOR_DLKMIMAGE_TARGET) $(INSTALLED_VENDOR_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_VENDOR_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_VENDOR_DLKM) \ $(vendor_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_VENDOR_DLKM) $(build-vendor_dlkmimage-target) VENDOR_DLKM_NOTICE_DEPS += $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) Loading @@ -4116,7 +4075,7 @@ $(call declare-1p-container,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDOR_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_VENDOR_DLKM),$(PRODUCT_OUT)/:/) .PHONY: vendor_dlkmimage-nodeps vdnod vendor_dlkmimage-nodeps vdnod: | $(INTERNAL_USERIMAGES_DEPS) $(vendor_dlkmimage_intermediates)/file_list.txt vendor_dlkmimage-nodeps vdnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-vendor_dlkmimage-target) .PHONY: sync_vendor_dlkm Loading Loading @@ -4159,21 +4118,17 @@ define build-odm_dlkmimage-target odm_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(odm_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_ODM_DLKM) $(odm_dlkmimage_intermediates)/odm_dlkm_image_info.txt \ $(INSTALLED_ODM_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_ODM_DLKMIMAGE_TARGET),$(BOARD_ODM_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(odm_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_ODM_DLKM)/,,$(filter $(TARGET_OUT_ODM_DLKM)/%,$(INTERNAL_ODM_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_ODM_DLKMIMAGE_TARGET := $(BUILT_ODM_DLKMIMAGE_TARGET) $(INSTALLED_ODM_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_ODM_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_ODM_DLKM) \ $(odm_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_ODM_DLKM) $(build-odm_dlkmimage-target) ODM_DLKM_NOTICE_DEPS += $(INSTALLED_ODM_DLKMIMAGE_TARGET) Loading @@ -4182,7 +4137,7 @@ $(call declare-1p-container,$(INSTALLED_ODM_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_ODM_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODM_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_ODM_DLKM),$(PRODUCT_OUT)/:/) .PHONY: odm_dlkmimage-nodeps odnod odm_dlkmimage-nodeps odnod: | $(INTERNAL_USERIMAGES_DEPS) $(odm_dlkmimage_intermediates)/file_list.txt odm_dlkmimage-nodeps odnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-odm_dlkmimage-target) .PHONY: sync_odm_dlkm Loading Loading @@ -4227,21 +4182,17 @@ define build-system_dlkmimage-target system_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(system_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_DLKM) $(system_dlkmimage_intermediates)/system_dlkm_image_info.txt \ $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),$(BOARD_SYSTEM_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(system_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_DLKM)/,,$(filter $(TARGET_OUT_SYSTEM_DLKM)/%,$(INTERNAL_SYSTEM_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEM_DLKMIMAGE_TARGET := $(BUILT_SYSTEM_DLKMIMAGE_TARGET) $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_SYSTEM_DLKM) \ $(system_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_SYSTEM_DLKM) $(build-system_dlkmimage-target) SYSTEM_DLKM_NOTICE_DEPS += $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) Loading @@ -4250,7 +4201,7 @@ $(call declare-1p-container,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEM_DLKM),$(PRODUCT_OUT)/:/) .PHONY: system_dlkmimage-nodeps sdnod system_dlkmimage-nodeps sdnod: | $(INTERNAL_USERIMAGES_DEPS) $(system_dlkmimage_intermediates)/file_list.txt system_dlkmimage-nodeps sdnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-system_dlkmimage-target) .PHONY: sync_system_dlkm Loading tools/releasetools/build_image.py +23 −63 Original line number Diff line number Diff line #!/usr/bin/env python3 #!/usr/bin/env python # # Copyright (C) 2011 The Android Open Source Project # Loading @@ -22,9 +22,9 @@ Usage: build_image input_directory properties_file output_image \\ target_output_directory """ from __future__ import print_function import datetime import argparse import glob import logging import os Loading @@ -34,7 +34,6 @@ import shlex import shutil import sys import uuid import tempfile import common import verity_utils Loading Loading @@ -920,69 +919,27 @@ def BuildVBMeta(in_dir, glob_dict, output_path): common.BuildVBMeta(output_path, partitions, name, vbmeta_partitions) def BuildImageOrVBMeta(input_directory, target_out, glob_dict, image_properties, out_file): try: if "vbmeta" in os.path.basename(out_file): OPTIONS.info_dict = glob_dict BuildVBMeta(input_directory, glob_dict, out_file) else: BuildImage(input_directory, image_properties, out_file, target_out) except: logger.error("Failed to build %s from %s", out_file, input_directory) raise def CopyInputDirectory(src, dst, filter_file): with open(filter_file, 'r') as f: for line in f: line = line.strip() if not line: return if line != os.path.normpath(line): sys.exit(f"{line}: not normalized") if line.startswith("../") or line.startswith('/'): sys.exit(f"{line}: escapes staging directory by starting with ../ or /") full_src = os.path.join(src, line) full_dst = os.path.join(dst, line) if os.path.isdir(full_src): os.makedirs(full_dst, exist_ok=True) else: os.makedirs(os.path.dirname(full_dst), exist_ok=True) os.link(full_src, full_dst, follow_symlinks=False) def main(argv): parser = argparse.ArgumentParser( description="Builds output_image from the given input_directory and properties_file, and " "writes the image to target_output_directory.") parser.add_argument("--input-directory-filter-file", help="the path to a file that contains a list of all files in the input_directory. If this " "option is provided, all files under the input_directory that are not listed in this file will " "be deleted before building the image. This is to work around the fact that building a module " "will install in by default, so there could be files in the input_directory that are not " "actually supposed to be part of the partition. The paths in this file must be relative to " "input_directory.") parser.add_argument("input_directory", help="the staging directory to be converted to an image file") parser.add_argument("properties_file", help="a file containing the 'global dictionary' of properties that affect how the image is " "built") parser.add_argument("out_file", help="the output file to write") parser.add_argument("target_out", help="the path to $(TARGET_OUT). Certain tools will use this to look through multiple staging " "directories for fs config files.") args = parser.parse_args() args = common.ParseOptions(argv, __doc__) if len(args) != 4: print(__doc__) sys.exit(1) common.InitLogging() glob_dict = LoadGlobalDict(args.properties_file) in_dir = args[0] glob_dict_file = args[1] out_file = args[2] target_out = args[3] glob_dict = LoadGlobalDict(glob_dict_file) if "mount_point" in glob_dict: # The caller knows the mount point and provides a dictionary needed by # BuildImage(). image_properties = glob_dict else: image_filename = os.path.basename(args.out_file) image_filename = os.path.basename(out_file) mount_point = "" if image_filename == "system.img": mount_point = "system" Loading Loading @@ -1017,12 +974,15 @@ def main(argv): if "vbmeta" != mount_point: image_properties = ImagePropFromGlobalDict(glob_dict, mount_point) if args.input_directory_filter_file and not os.environ.get("BUILD_BROKEN_INCORRECT_PARTITION_IMAGES"): with tempfile.TemporaryDirectory(dir=os.path.dirname(args.input_directory)) as new_input_directory: CopyInputDirectory(args.input_directory, new_input_directory, args.input_directory_filter_file) BuildImageOrVBMeta(new_input_directory, args.target_out, glob_dict, image_properties, args.out_file) try: if "vbmeta" in os.path.basename(out_file): OPTIONS.info_dict = glob_dict BuildVBMeta(in_dir, glob_dict, out_file) else: BuildImageOrVBMeta(args.input_directory, args.target_out, glob_dict, image_properties, args.out_file) BuildImage(in_dir, image_properties, out_file, target_out) except: logger.error("Failed to build %s from %s", out_file, in_dir) raise if __name__ == '__main__': Loading Loading
Changes.md +1 −13 Original line number Diff line number Diff line # Build System Changes for Android.mk/Android.bp Writers ## Partitions are no longer affected by previous builds Partition builds used to include everything in their staging directories, and building an individual module will install it to the staging directory. Thus, previously, `m mymodule` followed by `m` would cause `mymodule` to be presinstalled on the device, even if it wasn't listed in `PRODUCT_PACKAGES`. This behavior has been changed, and now the partition images only include what they'd have if you did a clean build. This behavior can be disabled by setting the `BUILD_BROKEN_INCORRECT_PARTITION_IMAGES` environment variable. # Build System Changes for Android.mk Writers ## Perform validation of Soong plugins Loading Loading @@ -40,7 +29,6 @@ overridden by setting the `BUILD_BROKEN_USES_SOONG_PYTHON2_MODULES` product conf variable to `true`. Python 2 is slated for complete removal in V. ## Stop referencing sysprop_library directly from cc modules For the migration to Bazel, we are no longer mapping sysprop_library targets Loading
core/Makefile +25 −74 Original line number Diff line number Diff line Loading @@ -3425,22 +3425,14 @@ $(eval $(call declare-0p-target,$(INSTALLED_FILES_JSON))) .PHONY: installed-file-list installed-file-list: $(INSTALLED_FILES_FILE) systemimage_intermediates :=$= $(call intermediates-dir-for,PACKAGING,systemimage) BUILT_SYSTEMIMAGE :=$= $(systemimage_intermediates)/system.img systemimage_intermediates := \ $(call intermediates-dir-for,PACKAGING,systemimage) BUILT_SYSTEMIMAGE := $(systemimage_intermediates)/system.img # Used by the bazel sandwich to request the staging dir be built $(systemimage_intermediates)/staging_dir.stamp: $(FULL_SYSTEMIMAGE_DEPS) touch $@ define write-file-lines $(1): @echo Writing $$@ rm -f $$@ echo -n > $$@ $$(foreach f,$(2),echo "$$(f)" >> $$@$$(newline)) endef # $(1): output file define build-systemimage-target @echo "Target system fs image: $(1)" Loading @@ -3449,19 +3441,16 @@ define build-systemimage-target skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(systemimage_intermediates)/file_list.txt \ $(TARGET_OUT) $(systemimage_intermediates)/system_image_info.txt $(1) $(TARGET_OUT) \ || ( mkdir -p $${DIST_DIR}; \ cp $(INSTALLED_FILES_FILE) $${DIST_DIR}/installed-files-rescued.txt; \ exit 1 ) endef $(eval $(call write-file-lines,$(systemimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT)/,,$(filter $(TARGET_OUT)/%,$(FULL_SYSTEMIMAGE_DEPS))))) ifeq ($(BOARD_AVB_ENABLE),true) $(BUILT_SYSTEMIMAGE): $(BOARD_AVB_SYSTEM_KEY_PATH) endif $(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE) $(systemimage_intermediates)/file_list.txt $(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE) $(call build-systemimage-target,$@) $(call declare-1p-container,$(BUILT_SYSTEMIMAGE),system/extras) Loading Loading @@ -3517,7 +3506,7 @@ SYSTEM_NOTICE_DEPS += $(INSTALLED_SYSTEMIMAGE_TARGET) .PHONY: systemimage-nodeps snod systemimage-nodeps snod: $(filter-out systemimage-nodeps snod,$(MAKECMDGOALS)) \ | $(INTERNAL_USERIMAGES_DEPS) $(systemimage_intermediates)/file_list.txt | $(INTERNAL_USERIMAGES_DEPS) @echo "make $@: ignoring dependencies" $(call build-systemimage-target,$(INSTALLED_SYSTEMIMAGE_TARGET)) $(hide) $(call assert-max-image-size,$(INSTALLED_SYSTEMIMAGE_TARGET),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)) Loading Loading @@ -3558,7 +3547,6 @@ define build-userdataimage-target $(call generate-image-prop-dictionary, $(userdataimage_intermediates)/userdata_image_info.txt,userdata,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(userdataimage_intermediates)/file_list.txt \ $(TARGET_OUT_DATA) $(userdataimage_intermediates)/userdata_image_info.txt \ $(INSTALLED_USERDATAIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_PARTITION_SIZE)) Loading @@ -3569,10 +3557,7 @@ INSTALLED_USERDATAIMAGE_TARGET := $(BUILT_USERDATAIMAGE_TARGET) INSTALLED_USERDATAIMAGE_TARGET_DEPS := \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_USERDATAIMAGE_FILES) $(eval $(call write-file-lines,$(userdataimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_DATA)/,,$(filter $(TARGET_OUT_DATA)/%,$(INSTALLED_USERDATAIMAGE_TARGET_DEPS))))) $(INSTALLED_USERDATAIMAGE_TARGET): $(INSTALLED_USERDATAIMAGE_TARGET_DEPS) $(userdataimage_intermediates)/file_list.txt $(INSTALLED_USERDATAIMAGE_TARGET): $(INSTALLED_USERDATAIMAGE_TARGET_DEPS) $(build-userdataimage-target) $(call declare-1p-container,$(INSTALLED_USERDATAIMAGE_TARGET),) Loading @@ -3581,7 +3566,7 @@ $(call declare-container-license-deps,$(INSTALLED_USERDATAIMAGE_TARGET),$(INSTAL UNMOUNTED_NOTICE_VENDOR_DEPS+= $(INSTALLED_USERDATAIMAGE_TARGET) .PHONY: userdataimage-nodeps userdataimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(userdataimage_intermediates)/file_list.txt userdataimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-userdataimage-target) endif # BUILDING_USERDATA_IMAGE Loading Loading @@ -3617,17 +3602,14 @@ define build-cacheimage-target $(call generate-image-prop-dictionary, $(cacheimage_intermediates)/cache_image_info.txt,cache,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(cacheimage_intermediates)/file_list.txt \ $(TARGET_OUT_CACHE) $(cacheimage_intermediates)/cache_image_info.txt \ $(INSTALLED_CACHEIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_CACHEIMAGE_TARGET),$(BOARD_CACHEIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(cacheimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_CACHE)/,,$(filter $(TARGET_OUT_CACHE)/%,$(INTERNAL_CACHEIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_CACHEIMAGE_TARGET := $(BUILT_CACHEIMAGE_TARGET) $(INSTALLED_CACHEIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_CACHEIMAGE_FILES) $(cacheimage_intermediates)/file_list.txt $(INSTALLED_CACHEIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_CACHEIMAGE_FILES) $(build-cacheimage-target) $(call declare-1p-container,$(INSTALLED_CACHEIMAGE_TARGET),) Loading @@ -3636,7 +3618,7 @@ $(call declare-container-license-deps,$(INSTALLED_CACHEIMAGE_TARGET),$(INTERNAL_ UNMOUNTED_NOTICE_VENDOR_DEPS+= $(INSTALLED_CACHEIMAGE_TARGET) .PHONY: cacheimage-nodeps cacheimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(cacheimage_intermediates)/file_list.txt cacheimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-cacheimage-target) else # BUILDING_CACHE_IMAGE Loading Loading @@ -3701,19 +3683,16 @@ define build-systemotherimage-target $(call generate-image-prop-dictionary, $(systemotherimage_intermediates)/system_other_image_info.txt,system,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(systemotherimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_OTHER) $(systemotherimage_intermediates)/system_other_image_info.txt \ $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_SYSTEMOTHERIMAGE_TARGET),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(systemotherimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_OTHER)/,,$(filter $(TARGET_OUT_SYSTEM_OTHER)/%,$(INTERNAL_SYSTEMOTHERIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEMOTHERIMAGE_TARGET := $(BUILT_SYSTEMOTHERIMAGE_TARGET) ifneq (true,$(SANITIZE_LITE)) # Only create system_other when not building the second stage of a SANITIZE_LITE build. $(INSTALLED_SYSTEMOTHERIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEMOTHER) $(systemotherimage_intermediates)/file_list.txt $(INSTALLED_SYSTEMOTHERIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEMOTHER) $(build-systemotherimage-target) $(call declare-1p-container,$(INSTALLED_SYSTEMOTHERIMAGE_TARGET),) Loading @@ -3723,7 +3702,7 @@ UNMOUNTED_NOTICE_DEPS += $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) endif .PHONY: systemotherimage-nodeps systemotherimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(systemotherimage_intermediates)/file_list.txt systemotherimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) $(build-systemotherimage-target) endif # BUILDING_SYSTEM_OTHER_IMAGE Loading Loading @@ -3804,22 +3783,18 @@ define build-vendorimage-target $(call generate-image-prop-dictionary, $(vendorimage_intermediates)/vendor_image_info.txt,vendor,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(vendorimage_intermediates)/file_list.txt \ $(TARGET_OUT_VENDOR) $(vendorimage_intermediates)/vendor_image_info.txt \ $(INSTALLED_VENDORIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_VENDORIMAGE_TARGET) $(RECOVERY_FROM_BOOT_PATCH),$(BOARD_VENDORIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(vendorimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_VENDOR)/,,$(filter $(TARGET_OUT_VENDOR)/%,$(INTERNAL_VENDORIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_VENDORIMAGE_TARGET := $(BUILT_VENDORIMAGE_TARGET) $(INSTALLED_VENDORIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_VENDORIMAGE_FILES) \ $(INSTALLED_FILES_FILE_VENDOR) \ $(RECOVERY_FROM_BOOT_PATCH) \ $(vendorimage_intermediates)/file_list.txt $(RECOVERY_FROM_BOOT_PATCH) $(build-vendorimage-target) VENDOR_NOTICE_DEPS += $(INSTALLED_VENDORIMAGE_TARGET) Loading @@ -3828,7 +3803,7 @@ $(call declare-container-license-metadata,$(INSTALLED_VENDORIMAGE_TARGET),legacy $(call declare-container-license-deps,$(INSTALLED_VENDORIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDORIMAGE_FILES) $(RECOVERY_FROM_BOOT_PATH),$(PRODUCT_OUT)/:/) .PHONY: vendorimage-nodeps vnod vendorimage-nodeps vnod: | $(INTERNAL_USERIMAGES_DEPS) $(vendorimage_intermediates)/file_list.txt vendorimage-nodeps vnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-vendorimage-target) .PHONY: sync_vendor Loading Loading @@ -3874,21 +3849,17 @@ define build-productimage-target $(call generate-image-prop-dictionary, $(productimage_intermediates)/product_image_info.txt,product,skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(productimage_intermediates)/file_list.txt \ $(TARGET_OUT_PRODUCT) $(productimage_intermediates)/product_image_info.txt \ $(INSTALLED_PRODUCTIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_PRODUCTIMAGE_TARGET),$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(productimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_PRODUCT)/,,$(filter $(TARGET_OUT_PRODUCT)/%,$(INTERNAL_PRODUCTIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_PRODUCTIMAGE_TARGET := $(BUILT_PRODUCTIMAGE_TARGET) $(INSTALLED_PRODUCTIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_PRODUCTIMAGE_FILES) \ $(INSTALLED_FILES_FILE_PRODUCT) \ $(productimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_PRODUCT) $(build-productimage-target) PRODUCT_NOTICE_DEPS += $(INSTALLED_PRODUCTIMAGE_TARGET) Loading @@ -3897,7 +3868,7 @@ $(call declare-1p-container,$(INSTALLED_PRODUCTIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_PRODUCTIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_PRODUCTIMAGE_FILES) $(INSTALLED_FILES_FILE_PRODUCT),$(PRODUCT_OUT)/:/) .PHONY: productimage-nodeps pnod productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(productimage_intermediates)/file_list.txt productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-productimage-target) .PHONY: sync_product Loading Loading @@ -3939,7 +3910,6 @@ define build-system_extimage-target $(call generate-image-prop-dictionary, $(system_extimage_intermediates)/system_ext_image_info.txt,system_ext, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(system_extimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_EXT) \ $(system_extimage_intermediates)/system_ext_image_info.txt \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ Loading @@ -3947,15 +3917,12 @@ define build-system_extimage-target $(call assert-max-image-size,$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET),$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(system_extimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_EXT)/,,$(filter $(TARGET_OUT_SYSTEM_EXT)/%,$(INTERNAL_SYSTEM_EXTIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEM_EXTIMAGE_TARGET := $(BUILT_SYSTEM_EXTIMAGE_TARGET) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_SYSTEM_EXTIMAGE_FILES) \ $(INSTALLED_FILES_FILE_SYSTEM_EXT) \ $(system_extimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_SYSTEM_EXT) $(build-system_extimage-target) SYSTEM_EXT_NOTICE_DEPS += $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) Loading @@ -3964,7 +3931,7 @@ $(call declare-1p-container,$(INSTALLED_SYSTEM_EXTIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_SYSTEM_EXTIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEM_EXTIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEM_EXT),$(PRODUCT_OUT)/:/) .PHONY: systemextimage-nodeps senod systemextimage-nodeps senod: | $(INTERNAL_USERIMAGES_DEPS) $(system_extimage_intermediates)/file_list.txt systemextimage-nodeps senod: | $(INTERNAL_USERIMAGES_DEPS) $(build-system_extimage-target) .PHONY: sync_system_ext Loading Loading @@ -4027,21 +3994,17 @@ define build-odmimage-target skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(odmimage_intermediates)/file_list.txt \ $(TARGET_OUT_ODM) $(odmimage_intermediates)/odm_image_info.txt \ $(INSTALLED_ODMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),$(BOARD_ODMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(odmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_ODM)/,,$(filter $(TARGET_OUT_ODM)/%,$(INTERNAL_ODMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_ODMIMAGE_TARGET := $(BUILT_ODMIMAGE_TARGET) $(INSTALLED_ODMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_ODMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_ODM) \ $(odmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_ODM) $(build-odmimage-target) ODM_NOTICE_DEPS += $(INSTALLED_ODMIMAGE_TARGET) Loading @@ -4050,7 +4013,7 @@ $(call declare-1p-container,$(INSTALLED_ODMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_ODMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODMIMAGE_FILES) $(INSTALLED_FILES_FILE_ODM),$(PRODUCT_OUT)/:/) .PHONY: odmimage-nodeps onod odmimage-nodeps onod: | $(INTERNAL_USERIMAGES_DEPS) $(odmimage_intermediates)/file_list.txt odmimage-nodeps onod: | $(INTERNAL_USERIMAGES_DEPS) $(build-odmimage-target) .PHONY: sync_odm Loading Loading @@ -4093,21 +4056,17 @@ define build-vendor_dlkmimage-target vendor_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(vendor_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_VENDOR_DLKM) $(vendor_dlkmimage_intermediates)/vendor_dlkm_image_info.txt \ $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),$(BOARD_VENDOR_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(vendor_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_VENDOR_DLKM)/,,$(filter $(TARGET_OUT_VENDOR_DLKM)/%,$(INTERNAL_VENDOR_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_VENDOR_DLKMIMAGE_TARGET := $(BUILT_VENDOR_DLKMIMAGE_TARGET) $(INSTALLED_VENDOR_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_VENDOR_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_VENDOR_DLKM) \ $(vendor_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_VENDOR_DLKM) $(build-vendor_dlkmimage-target) VENDOR_DLKM_NOTICE_DEPS += $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) Loading @@ -4116,7 +4075,7 @@ $(call declare-1p-container,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_VENDOR_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_VENDOR_DLKM),$(PRODUCT_OUT)/:/) .PHONY: vendor_dlkmimage-nodeps vdnod vendor_dlkmimage-nodeps vdnod: | $(INTERNAL_USERIMAGES_DEPS) $(vendor_dlkmimage_intermediates)/file_list.txt vendor_dlkmimage-nodeps vdnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-vendor_dlkmimage-target) .PHONY: sync_vendor_dlkm Loading Loading @@ -4159,21 +4118,17 @@ define build-odm_dlkmimage-target odm_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(odm_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_ODM_DLKM) $(odm_dlkmimage_intermediates)/odm_dlkm_image_info.txt \ $(INSTALLED_ODM_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_ODM_DLKMIMAGE_TARGET),$(BOARD_ODM_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(odm_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_ODM_DLKM)/,,$(filter $(TARGET_OUT_ODM_DLKM)/%,$(INTERNAL_ODM_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_ODM_DLKMIMAGE_TARGET := $(BUILT_ODM_DLKMIMAGE_TARGET) $(INSTALLED_ODM_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_ODM_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_ODM_DLKM) \ $(odm_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_ODM_DLKM) $(build-odm_dlkmimage-target) ODM_DLKM_NOTICE_DEPS += $(INSTALLED_ODM_DLKMIMAGE_TARGET) Loading @@ -4182,7 +4137,7 @@ $(call declare-1p-container,$(INSTALLED_ODM_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_ODM_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODM_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_ODM_DLKM),$(PRODUCT_OUT)/:/) .PHONY: odm_dlkmimage-nodeps odnod odm_dlkmimage-nodeps odnod: | $(INTERNAL_USERIMAGES_DEPS) $(odm_dlkmimage_intermediates)/file_list.txt odm_dlkmimage-nodeps odnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-odm_dlkmimage-target) .PHONY: sync_odm_dlkm Loading Loading @@ -4227,21 +4182,17 @@ define build-system_dlkmimage-target system_dlkm, skip_fsck=true) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ $(BUILD_IMAGE) \ --input-directory-filter-file $(system_dlkmimage_intermediates)/file_list.txt \ $(TARGET_OUT_SYSTEM_DLKM) $(system_dlkmimage_intermediates)/system_dlkm_image_info.txt \ $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) $(TARGET_OUT) $(call assert-max-image-size,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),$(BOARD_SYSTEM_DLKMIMAGE_PARTITION_SIZE)) endef $(eval $(call write-file-lines,$(system_dlkmimage_intermediates)/file_list.txt,$(subst $(TARGET_OUT_SYSTEM_DLKM)/,,$(filter $(TARGET_OUT_SYSTEM_DLKM)/%,$(INTERNAL_SYSTEM_DLKMIMAGE_FILES))))) # We just build this directly to the install location. INSTALLED_SYSTEM_DLKMIMAGE_TARGET := $(BUILT_SYSTEM_DLKMIMAGE_TARGET) $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET): \ $(INTERNAL_USERIMAGES_DEPS) \ $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) \ $(INSTALLED_FILES_FILE_SYSTEM_DLKM) \ $(system_dlkmimage_intermediates)/file_list.txt $(INSTALLED_FILES_FILE_SYSTEM_DLKM) $(build-system_dlkmimage-target) SYSTEM_DLKM_NOTICE_DEPS += $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) Loading @@ -4250,7 +4201,7 @@ $(call declare-1p-container,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),) $(call declare-container-license-deps,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),$(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEM_DLKM),$(PRODUCT_OUT)/:/) .PHONY: system_dlkmimage-nodeps sdnod system_dlkmimage-nodeps sdnod: | $(INTERNAL_USERIMAGES_DEPS) $(system_dlkmimage_intermediates)/file_list.txt system_dlkmimage-nodeps sdnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-system_dlkmimage-target) .PHONY: sync_system_dlkm Loading
tools/releasetools/build_image.py +23 −63 Original line number Diff line number Diff line #!/usr/bin/env python3 #!/usr/bin/env python # # Copyright (C) 2011 The Android Open Source Project # Loading @@ -22,9 +22,9 @@ Usage: build_image input_directory properties_file output_image \\ target_output_directory """ from __future__ import print_function import datetime import argparse import glob import logging import os Loading @@ -34,7 +34,6 @@ import shlex import shutil import sys import uuid import tempfile import common import verity_utils Loading Loading @@ -920,69 +919,27 @@ def BuildVBMeta(in_dir, glob_dict, output_path): common.BuildVBMeta(output_path, partitions, name, vbmeta_partitions) def BuildImageOrVBMeta(input_directory, target_out, glob_dict, image_properties, out_file): try: if "vbmeta" in os.path.basename(out_file): OPTIONS.info_dict = glob_dict BuildVBMeta(input_directory, glob_dict, out_file) else: BuildImage(input_directory, image_properties, out_file, target_out) except: logger.error("Failed to build %s from %s", out_file, input_directory) raise def CopyInputDirectory(src, dst, filter_file): with open(filter_file, 'r') as f: for line in f: line = line.strip() if not line: return if line != os.path.normpath(line): sys.exit(f"{line}: not normalized") if line.startswith("../") or line.startswith('/'): sys.exit(f"{line}: escapes staging directory by starting with ../ or /") full_src = os.path.join(src, line) full_dst = os.path.join(dst, line) if os.path.isdir(full_src): os.makedirs(full_dst, exist_ok=True) else: os.makedirs(os.path.dirname(full_dst), exist_ok=True) os.link(full_src, full_dst, follow_symlinks=False) def main(argv): parser = argparse.ArgumentParser( description="Builds output_image from the given input_directory and properties_file, and " "writes the image to target_output_directory.") parser.add_argument("--input-directory-filter-file", help="the path to a file that contains a list of all files in the input_directory. If this " "option is provided, all files under the input_directory that are not listed in this file will " "be deleted before building the image. This is to work around the fact that building a module " "will install in by default, so there could be files in the input_directory that are not " "actually supposed to be part of the partition. The paths in this file must be relative to " "input_directory.") parser.add_argument("input_directory", help="the staging directory to be converted to an image file") parser.add_argument("properties_file", help="a file containing the 'global dictionary' of properties that affect how the image is " "built") parser.add_argument("out_file", help="the output file to write") parser.add_argument("target_out", help="the path to $(TARGET_OUT). Certain tools will use this to look through multiple staging " "directories for fs config files.") args = parser.parse_args() args = common.ParseOptions(argv, __doc__) if len(args) != 4: print(__doc__) sys.exit(1) common.InitLogging() glob_dict = LoadGlobalDict(args.properties_file) in_dir = args[0] glob_dict_file = args[1] out_file = args[2] target_out = args[3] glob_dict = LoadGlobalDict(glob_dict_file) if "mount_point" in glob_dict: # The caller knows the mount point and provides a dictionary needed by # BuildImage(). image_properties = glob_dict else: image_filename = os.path.basename(args.out_file) image_filename = os.path.basename(out_file) mount_point = "" if image_filename == "system.img": mount_point = "system" Loading Loading @@ -1017,12 +974,15 @@ def main(argv): if "vbmeta" != mount_point: image_properties = ImagePropFromGlobalDict(glob_dict, mount_point) if args.input_directory_filter_file and not os.environ.get("BUILD_BROKEN_INCORRECT_PARTITION_IMAGES"): with tempfile.TemporaryDirectory(dir=os.path.dirname(args.input_directory)) as new_input_directory: CopyInputDirectory(args.input_directory, new_input_directory, args.input_directory_filter_file) BuildImageOrVBMeta(new_input_directory, args.target_out, glob_dict, image_properties, args.out_file) try: if "vbmeta" in os.path.basename(out_file): OPTIONS.info_dict = glob_dict BuildVBMeta(in_dir, glob_dict, out_file) else: BuildImageOrVBMeta(args.input_directory, args.target_out, glob_dict, image_properties, args.out_file) BuildImage(in_dir, image_properties, out_file, target_out) except: logger.error("Failed to build %s from %s", out_file, in_dir) raise if __name__ == '__main__': Loading