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

Commit 684350d2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Partition the targets for notice files."

parents ef7f5467 4b25c90e
Loading
Loading
Loading
Loading
+54 −10
Original line number Diff line number Diff line
@@ -1314,6 +1314,7 @@ endif # BUILDING_VENDOR_BOOT_IMAGE
# $(5) - Directory to use.  Notice files are all $(5)/src.  Other
#		 directories in there will be used for scratch
# $(6) - Dependencies for the output files
# $(7) - Directories to exclude
#
# The algorithm here is that we go collect a hash for each of the notice
# files and write the names of the files that match that hash.  Then
@@ -1331,7 +1332,7 @@ $(2) $(3): PRIVATE_MESSAGE := $(4)
$(2) $(3): PRIVATE_DIR := $(5)
$(2) : $(3)
$(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py
	build/make/tools/generate-notice-files.py --text-output $(2) \
	build/make/tools/generate-notice-files.py --text-output $(2) $(foreach xdir, $(7), -e $(xdir) )\
	    $(if $(filter $(1),xml_excluded_vendor_product_odm),-e vendor -e product -e system_ext -e odm --xml-output, \
	      $(if $(filter $(1),xml_excluded_system_product_odm),-e system -e product -e system_ext -e odm --xml-output, \
	        $(if $(filter $(1),xml_product),-i product --xml-output, \
@@ -1356,6 +1357,11 @@ kernel_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/kernel.txt
winpthreads_notice_file := $(TARGET_OUT_NOTICE_FILES)/src/winpthreads.txt
pdk_fusion_notice_files := $(filter $(TARGET_OUT_NOTICE_FILES)/%, $(ALL_PDK_FUSION_FILES))

# Some targets get included under $(PRODUCT_OUT) for debug symbols or other
# reasons--not to be flashed onto any device. Targets under these directories
# need no associated notice file on the device UI.
exclude_target_dirs := apex

# TODO(b/69865032): Make PRODUCT_NOTICE_SPLIT the default behavior.
ifneq ($(PRODUCT_NOTICE_SPLIT),true)
target_notice_file_html := $(TARGET_OUT_INTERMEDIATES)/NOTICE.html
@@ -1366,7 +1372,8 @@ $(eval $(call combine-notice-files, html, \
	        $(target_notice_file_html), \
	        "Notices for files contained in the filesystem images in this directory:", \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files)))
	        $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files), \
	        $(exclude_target_dirs)))
$(target_notice_file_html_gz): $(target_notice_file_html) | $(MINIGZIP)
	$(hide) $(MINIGZIP) -9 < $< > $@
$(installed_notice_html_or_xml_gz): $(target_notice_file_html_gz)
@@ -1400,10 +1407,13 @@ installed_odm_notice_xml_gz := $(TARGET_OUT_ODM)/etc/NOTICE.xml.gz
# being built. A notice xml file must depend on all modules that could potentially
# install a license file relevant to it.
license_modules := $(ALL_DEFAULT_INSTALLED_MODULES) $(kernel_notice_file) $(pdk_fusion_notice_files)
# Only files copied to a system image need system image notices.
license_modules := $(filter $(PRODUCT_OUT)/%,$(license_modules))
# Phonys/fakes don't have notice files (though their deps might)
license_modules := $(filter-out $(TARGET_OUT_FAKE)/%,$(license_modules))
# testcases are not relevant to the system image.
license_modules := $(filter-out $(TARGET_OUT_TESTCASES)/%,$(license_modules))
# filesystem images: system, vendor, product, system_ext, and odm
license_modules_system := $(filter $(TARGET_OUT)/%,$(license_modules))
license_modules_vendor := $(filter $(TARGET_OUT_VENDOR)/%,$(license_modules))
license_modules_product := $(filter $(TARGET_OUT_PRODUCT)/%,$(license_modules))
@@ -1414,16 +1424,44 @@ license_modules_agg := $(license_modules_system) \
                       $(license_modules_product) \
                       $(license_modules_system_ext) \
                       $(license_modules_odm)
# targets used for debug symbols only and do not get copied to the device
license_modules_symbols_only := $(filter $(PRODUCT_OUT)/apex/%,$(license_modules))

license_modules_rest := $(filter-out $(license_modules_agg),$(license_modules))
license_modules_rest := $(filter-out $(license_modules_symbols_only),$(license_modules_rest))

# Identify the other targets we expect to have notices for:
# targets copied to the device but are not readable by the UI (e.g. must boot
# into a different partition to read or don't have an associated /etc
# directory) must have their notices built somewhere readable.
license_modules_rehomed := $(filter-out $(PRODUCT_OUT)/%/%,$(license_modules_rest))  # files in root have no /etc
license_modules_rehomed += $(filter $(PRODUCT_OUT)/recovery/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/root/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/data/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/ramdisk/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/debug_ramdisk/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/vendor-ramdisk/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/persist.img,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/system_other/%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/kernel%,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.img,$(license_modules_rest))
license_modules_rehomed += $(filter $(PRODUCT_OUT)/%.bin,$(license_modules_rest))

# after removing targets in system images, targets reported in system images, and
# targets used for debug symbols that do not need notices, nothing must remain.
license_modules_rest := $(filter-out $(license_modules_rehomed),$(license_modules_rest))
$(call maybe-print-list-and-error, $(license_modules_rest), \
        "Targets added under $(PRODUCT_OUT)/ unaccounted for notice handling.")

# If we are building in a configuration that includes a prebuilt vendor.img, we can't
# update its notice file, so include those notices in the system partition instead
ifdef BOARD_PREBUILT_VENDORIMAGE
license_modules_system += $(license_modules_rest)
license_modules_system += $(license_modules_rehomed)
system_xml_directories := xml_excluded_vendor_product_odm
system_notice_file_message := "Notices for files contained in all filesystem images except vendor/system_ext/product/odm in this directory:"
else
license_modules_vendor += $(license_modules_rest)
license_modules_vendor += $(license_modules_rehomed)
system_xml_directories := xml_system
system_notice_file_message := "Notices for files contained in the system filesystem image in this directory:"
endif
@@ -1433,31 +1471,36 @@ $(eval $(call combine-notice-files, $(system_xml_directories), \
	        $(target_notice_file_xml), \
	        $(system_notice_file_message), \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(license_modules_system)))
	        $(license_modules_system), \
	        $(exclude_target_dirs)))
$(eval $(call combine-notice-files, xml_excluded_system_product_odm, \
	        $(target_vendor_notice_file_txt), \
	        $(target_vendor_notice_file_xml), \
	        "Notices for files contained in all filesystem images except system/system_ext/product/odm in this directory:", \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(license_modules_vendor)))
	        $(license_modules_vendor), \
	        $(exclude_target_dirs)))
$(eval $(call combine-notice-files, xml_product, \
	        $(target_product_notice_file_txt), \
	        $(target_product_notice_file_xml), \
	        "Notices for files contained in the product filesystem image in this directory:", \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(license_modules_product)))
	        $(license_modules_product), \
	        $(exclude_target_dirs)))
$(eval $(call combine-notice-files, xml_system_ext, \
	        $(target_system_ext_notice_file_txt), \
	        $(target_system_ext_notice_file_xml), \
	        "Notices for files contained in the system_ext filesystem image in this directory:", \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(license_modules_system_ext)))
	        $(license_modules_system_ext), \
	        $(exclude_target_dirs)))
$(eval $(call combine-notice-files, xml_odm, \
	        $(target_odm_notice_file_txt), \
	        $(target_odm_notice_file_xml), \
	        "Notices for files contained in the odm filesystem image in this directory:", \
	        $(TARGET_OUT_NOTICE_FILES), \
	        $(license_modules_odm)))
	        $(license_modules_odm), \
	        $(exclude_target_dirs)))

$(target_notice_file_xml_gz): $(target_notice_file_xml) | $(MINIGZIP)
	$(hide) $(MINIGZIP) -9 < $< > $@
@@ -1495,7 +1538,8 @@ $(eval $(call combine-notice-files, html, \
	        "Notices for files contained in the tools directory:", \
	        $(HOST_OUT_NOTICE_FILES), \
	        $(ALL_DEFAULT_INSTALLED_MODULES) \
	        $(winpthreads_notice_file)))
	        $(winpthreads_notice_file), \
	        $(exclude_target_dirs)))

endif  # TARGET_BUILD_APPS