kleaf: vendor_dlkm exclude modules from system_dlkm
After this change, if dedup_dlkm_modules is set:
- When building vendor_dlkm, the staging directory from
system_dlkm is extracted to MODULES_STAGING_DIR beforehand,
so that depmod can find them. This allows modules from
vendor_dlkm to link to modules from system_dlkm.
- system_dlkm.modules.load is concatenated to $DIST_DIR/modules.load
(after modules.load from vendor_boot) so that the list of modules
from system_dlkm are excluded from vendor_dlkm.modules.load list.
This means that after this change, if dedup_dlkm_modules is set
for a build, a device effectively enables the feature that allows
vendor_dlkm modules to depend on system_dlkm modules.
If dedup_dlkm_modules is set, additional changes are required
on the device so that userspace loads system_dlkm modules before
loading vendor_dlkm modules.
Note that even with this change, vendor_boot modules and
system_dlkm modules themselves (the *.ko files) aren't excluded
from vendor_dlkm.img built from the kernel source tree if
vendor_dlkm_modules_list specifies .* (all modules). They are only
excluded from modules.load. However, the images from the kernel
source tree are for development purposes. It is expected that
the system_dlkm / vendor_dlkm images are built from the platform
source tree, excluding modules not in the corresponding modules.load
file.
A subsequent optimization would be to exclude vendor_boot / system_dlkm
modules from this "debug" vendor_dlkm image built from the kernel
source tree. This optimization is not covered by this change.
Bug: 272523944
Bug: 272525097
Change-Id: I86197ed03bc32563399f69e8f93eaefc585a9464
5 files changed