Support for genfs labels in build_target_files
system/etc/selinux/plat_sepolicy_genfs_{ver}.cil must be included when
generating a precompiled sepolicy binary.
Bug: 409353466
Test: manually run merge_target_files and check the secilc command
Change-Id: Id27332fca9e213bbd8e66555a1dc5c023af747b7
diff --git a/tools/releasetools/merge/merge_compatibility_checks.py b/tools/releasetools/merge/merge_compatibility_checks.py
index 80b5caa..69633bd 100644
--- a/tools/releasetools/merge/merge_compatibility_checks.py
+++ b/tools/releasetools/merge/merge_compatibility_checks.py
@@ -151,6 +151,15 @@
with open(vendor_plat_version_file) as f:
vendor_plat_version = f.read().strip()
+ vendor_genfs_version = ""
+ vendor_genfs_version_file = get_file('vendor',
+ 'etc/selinux/genfs_labels_version.txt')
+ if vendor_genfs_version_file:
+ with open(vendor_genfs_version_file) as f:
+ vendor_genfs_version = f.read().strip()
+ else:
+ logger.debug('Missing vendor/etc/selinux/genfs_labels_version.txt')
+
# Use the same flags and arguments as selinux.cpp OpenSplitPolicy().
cmd = ['secilc', '-m', '-M', 'true', '-G', '-N']
cmd.extend(['-c', kernel_sepolicy_version])
@@ -170,14 +179,20 @@
return errors
cmd.append(policy)
- optional_policy_files = (
+ optional_policy_files = [
('system', 'etc/selinux/mapping/%s.compat.cil' % vendor_plat_version),
('system_ext', 'etc/selinux/system_ext_sepolicy.cil'),
('system_ext', 'etc/selinux/mapping/%s.cil' % vendor_plat_version),
('product', 'etc/selinux/product_sepolicy.cil'),
('product', 'etc/selinux/mapping/%s.cil' % vendor_plat_version),
('odm', 'etc/selinux/odm_sepolicy.cil'),
- )
+ ]
+ if vendor_genfs_version != "":
+ optional_policy_files.append(
+ ('system',
+ f'etc/selinux/plat_sepolicy_genfs_{vendor_genfs_version}.cil',
+ )
+ )
for policy in (map(lambda partition_and_path: get_file(*partition_and_path),
optional_policy_files)):
if policy:
diff --git a/tools/releasetools/merge/test_merge_compatibility_checks.py b/tools/releasetools/merge/test_merge_compatibility_checks.py
index 0f319de..0a32565 100644
--- a/tools/releasetools/merge/test_merge_compatibility_checks.py
+++ b/tools/releasetools/merge/test_merge_compatibility_checks.py
@@ -56,11 +56,13 @@
<kernel-sepolicy-version>30</kernel-sepolicy-version>
</sepolicy>
</compatibility-matrix>""")
- write_temp_file('vendor/etc/selinux/plat_sepolicy_vers.txt', '30.0')
+ write_temp_file('vendor/etc/selinux/plat_sepolicy_vers.txt', '202504')
+ write_temp_file('vendor/etc/selinux/genfs_labels_version.txt', '202504')
write_temp_file('system/etc/selinux/plat_sepolicy.cil')
- write_temp_file('system/etc/selinux/mapping/30.0.cil')
- write_temp_file('product/etc/selinux/mapping/30.0.cil')
+ write_temp_file('system/etc/selinux/mapping/202504.cil')
+ write_temp_file('system/etc/selinux/plat_sepolicy_genfs_202504.cil')
+ write_temp_file('product/etc/selinux/mapping/202504.cil')
write_temp_file('vendor/etc/selinux/vendor_sepolicy.cil')
write_temp_file('vendor/etc/selinux/plat_pub_versioned.cil')
@@ -70,10 +72,11 @@
('secilc -m -M true -G -N -c 30 '
'-o {OTP}/META/combined_sepolicy -f /dev/null '
'{OTP}/system/etc/selinux/plat_sepolicy.cil '
- '{OTP}/system/etc/selinux/mapping/30.0.cil '
+ '{OTP}/system/etc/selinux/mapping/202504.cil '
'{OTP}/vendor/etc/selinux/vendor_sepolicy.cil '
'{OTP}/vendor/etc/selinux/plat_pub_versioned.cil '
- '{OTP}/product/etc/selinux/mapping/30.0.cil').format(
+ '{OTP}/product/etc/selinux/mapping/202504.cil',
+ '{OTP}/system/etc/selinux/plat_sepolicy_genfs_202504.cil').format(
OTP=product_out_dir))
def _copy_apex(self, source, output_dir, partition):