Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0968914e authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Revert "Add a check that the staging directories don't..."" into main

parents d64961ba be5e3910
Loading
Loading
Loading
Loading
+14 −24
Original line number Diff line number Diff line
@@ -3460,22 +3460,12 @@ BUILT_SYSTEMIMAGE :=$= $(systemimage_intermediates)/system.img
$(systemimage_intermediates)/staging_dir.stamp: $(FULL_SYSTEMIMAGE_DEPS)
	touch $@

COMPARE_FILE_LIST_TO_STAGING_DIR :=$= $(HOST_OUT_EXECUTABLES)/compare_file_list_to_staging_dir
# Args:
# $(1): The output file
# $(2): The staging directory
# $(3): The full list of files that should go into the partition.
define create-partition-file-list
$(1)-validate: $(1) $(strip $(3)) $(COMPARE_FILE_LIST_TO_STAGING_DIR) $(OUT_DIR)/partitions_were_clean_at_start_of_build.txt
	rm -f $$@
	$(if $(BUILD_BROKEN_INCORRECT_PARTITION_IMAGES),,$(COMPARE_FILE_LIST_TO_STAGING_DIR) $(OUT_DIR)/partitions_were_clean_at_start_of_build.txt $1 $(2))
	touch $$@
$(1): .KATI_VALIDATIONS := $(1)-validate
define write-file-lines
$(1):
	@echo Writing $$@
	rm -f $$@
	touch $$@
	$$(foreach f,$(subst $(2)/,,$(filter $(2)/%,$(3))),echo "$$(f)" >> $$@$$(newline))
	echo -n > $$@
	$$(foreach f,$(2),echo "$$(f)" >> $$@$$(newline))
endef

# $(1): output file
@@ -3493,7 +3483,7 @@ define build-systemimage-target
               exit 1 )
endef

$(eval $(call create-partition-file-list,$(systemimage_intermediates)/file_list.txt,$(TARGET_OUT),$(FULL_SYSTEMIMAGE_DEPS)))
$(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)
@@ -3607,7 +3597,7 @@ INSTALLED_USERDATAIMAGE_TARGET_DEPS := \
    $(INTERNAL_USERIMAGES_DEPS) \
    $(INTERNAL_USERDATAIMAGE_FILES)

$(eval $(call create-partition-file-list,$(userdataimage_intermediates)/file_list.txt,$(TARGET_OUT_DATA),$(INSTALLED_USERDATAIMAGE_TARGET_DEPS)))
$(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
	$(build-userdataimage-target)
@@ -3660,7 +3650,7 @@ define build-cacheimage-target
  $(call assert-max-image-size,$(INSTALLED_CACHEIMAGE_TARGET),$(BOARD_CACHEIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(cacheimage_intermediates)/file_list.txt,$(TARGET_OUT_CACHE),$(INTERNAL_CACHEIMAGE_FILES)))
$(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)
@@ -3744,7 +3734,7 @@ define build-systemotherimage-target
  $(call assert-max-image-size,$(INSTALLED_SYSTEMOTHERIMAGE_TARGET),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(systemotherimage_intermediates)/file_list.txt,$(TARGET_OUT_SYSTEM_OTHER),$(INTERNAL_SYSTEMOTHERIMAGE_FILES)))
$(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)
@@ -3847,7 +3837,7 @@ define build-vendorimage-target
  $(call assert-max-image-size,$(INSTALLED_VENDORIMAGE_TARGET) $(RECOVERY_FROM_BOOT_PATCH),$(BOARD_VENDORIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(vendorimage_intermediates)/file_list.txt,$(TARGET_OUT_VENDOR),$(INTERNAL_VENDORIMAGE_FILES)))
$(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)
@@ -3917,7 +3907,7 @@ define build-productimage-target
  $(call assert-max-image-size,$(INSTALLED_PRODUCTIMAGE_TARGET),$(BOARD_PRODUCTIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(productimage_intermediates)/file_list.txt,$(TARGET_OUT_PRODUCT),$(INTERNAL_PRODUCTIMAGE_FILES)))
$(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)
@@ -3984,7 +3974,7 @@ define build-system_extimage-target
  $(call assert-max-image-size,$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET),$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(system_extimage_intermediates)/file_list.txt,$(TARGET_OUT_SYSTEM_EXT),$(INTERNAL_SYSTEM_EXTIMAGE_FILES)))
$(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)
@@ -4070,7 +4060,7 @@ define build-odmimage-target
  $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),$(BOARD_ODMIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(odmimage_intermediates)/file_list.txt,$(TARGET_OUT_ODM),$(INTERNAL_ODMIMAGE_FILES)))
$(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)
@@ -4136,7 +4126,7 @@ define build-vendor_dlkmimage-target
  $(call assert-max-image-size,$(INSTALLED_VENDOR_DLKMIMAGE_TARGET),$(BOARD_VENDOR_DLKMIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(vendor_dlkmimage_intermediates)/file_list.txt,$(TARGET_OUT_VENDOR_DLKM),$(INTERNAL_VENDOR_DLKMIMAGE_FILES)))
$(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)
@@ -4202,7 +4192,7 @@ define build-odm_dlkmimage-target
  $(call assert-max-image-size,$(INSTALLED_ODM_DLKMIMAGE_TARGET),$(BOARD_ODM_DLKMIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(odm_dlkmimage_intermediates)/file_list.txt,$(TARGET_OUT_ODM_DLKM),$(INTERNAL_ODM_DLKMIMAGE_FILES)))
$(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)
@@ -4270,7 +4260,7 @@ define build-system_dlkmimage-target
  $(call assert-max-image-size,$(INSTALLED_SYSTEM_DLKMIMAGE_TARGET),$(BOARD_SYSTEM_DLKMIMAGE_PARTITION_SIZE))
endef

$(eval $(call create-partition-file-list,$(system_dlkmimage_intermediates)/file_list.txt,$(TARGET_OUT_SYSTEM_DLKM),$(INTERNAL_SYSTEM_DLKMIMAGE_FILES)))
$(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)
+30 −43
Original line number Diff line number Diff line
@@ -45,12 +45,9 @@ python_binary_host {

genrule_defaults {
  name: "extract_kernel_release_defaults",
    tools: [
        "extract_kernel",
        "lz4",
    ],
  tools: ["extract_kernel", "lz4"],
  out: ["kernel_release.txt"],
    cmd: "$(location) --tools lz4:$(location lz4) --input $(in) --output-release > $(out)",
  cmd: "$(location) --tools lz4:$(location lz4) --input $(in) --output-release > $(out)"
}

cc_binary_host {
@@ -82,18 +79,8 @@ python_binary_host {
    version: {
      py3: {
        embedded_launcher: true,
        },
    },
      }

python_binary_host {
    name: "compare_file_list_to_staging_dir",
    srcs: ["compare_file_list_to_staging_dir.py"],
    version: {
        py3: {
            embedded_launcher: true,
        },
    },
    }
}

python_test_host {
+0 −45
Original line number Diff line number Diff line
#!/usr/bin/env python3

import argparse
import os
import sys

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('partitions_were_clean_at_start_of_build')
    parser.add_argument('file_list')
    parser.add_argument('staging_dir')
    args = parser.parse_args()

    with open(args.partitions_were_clean_at_start_of_build, 'r') as f:
        contents = f.read().strip()
        if contents not in ['true', 'false']:
            sys.exit('failed to read ' + args.partitions_were_clean_at_start_of_build)
        if contents == 'false':
            # Since the partitions weren't clean at the start of the build, the test would
            # arbitrarily fail if we tried to run it. This is only for builds that directly follow
            # an `m installclean`. (Like most ci builds do)
            return

    with open(args.file_list, 'r') as f:
        files_in_file_list = set(f.read().strip().splitlines())

    files_in_staging_dir = set()
    for root, _, files in os.walk(args.staging_dir):
        for f in files:
            fullpath = os.path.join(root, f)
            files_in_staging_dir.add(os.path.relpath(fullpath, args.staging_dir))

    # backslashes aren't allowed in expression parts of f-strings
    sep = '\n  '
    if files_in_staging_dir != files_in_file_list:
        sys.exit(f'''Files in staging directory did not match files in file list after an installclean.
Note that in order to reproduce this error, you must run `m installclean` directly before `m`.
Files in the staging dir but not in the file list:
  {sep.join(sorted(files_in_staging_dir - files_in_file_list))}
Files in the file list but not in the staging dir:
  {sep.join(sorted(files_in_file_list - files_in_staging_dir))}
''')

if __name__ == "__main__":
    main()