30
30
# $(1): the set of policy name paths to build
31
31
build_policy = $(foreach type, $(1 ) , $(foreach file, $(addsuffix /$(type ) , $(LOCAL_PATH ) $(BOARD_SEPOLICY_DIRS ) ) , $(sort $(wildcard $(file ) ) ) ) )
32
32
33
+ # Add a file containing only a newline in-between each policy configuration
34
+ # 'contexts' file. This will allow OEM policy configuration files without a
35
+ # final newline (0x0A) to be built correctly by the m4(1) macro processor.
36
+ # $(1): the set of contexts file names.
37
+ # $(2): the file containing only 0x0A.
38
+ add_nl = $(foreach entry, $(1 ) , $(subst $(entry ) , $(entry ) $(2 ) , $(entry ) ) )
39
+
33
40
sepolicy_build_files := security_classes \
34
41
initial_sids \
35
42
access_vectors \
@@ -52,6 +59,21 @@ sepolicy_build_files := security_classes \
52
59
# #################################
53
60
include $(CLEAR_VARS )
54
61
62
+ LOCAL_MODULE := sectxfile_nl
63
+ LOCAL_MODULE_CLASS := ETC
64
+ LOCAL_MODULE_TAGS := optional
65
+
66
+ # Create a file containing newline only to add between context config files
67
+ include $(BUILD_SYSTEM ) /base_rules.mk
68
+ $(LOCAL_BUILT_MODULE ) : $(all_fcfiles_with_nl ) $(all_pcfiles_with_nl ) $(all_svcfiles_with_nl )
69
+ @mkdir -p $(dir $@ )
70
+ $(hide ) echo > $@
71
+
72
+ built_nl := $(LOCAL_BUILT_MODULE )
73
+
74
+ # ################################
75
+ include $(CLEAR_VARS )
76
+
55
77
LOCAL_MODULE := sepolicy
56
78
LOCAL_MODULE_CLASS := ETC
57
79
LOCAL_MODULE_TAGS := optional
@@ -161,11 +183,12 @@ ifneq ($(filter address,$(SANITIZE_TARGET)),)
161
183
all_fc_files := $(all_fc_files ) file_contexts_asan
162
184
endif
163
185
all_fc_files := $(call build_policy, $(all_fc_files ) )
186
+ all_fcfiles_with_nl := $(call add_nl, $(all_fc_files ) , $(built_nl ) )
164
187
165
188
file_contexts.tmp := $(intermediates ) /file_contexts.tmp
166
- $(file_contexts.tmp ) : PRIVATE_FC_FILES := $(all_fc_files )
189
+ $(file_contexts.tmp ) : PRIVATE_FC_FILES := $(all_fcfiles_with_nl )
167
190
$(file_contexts.tmp ) : PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS )
168
- $(file_contexts.tmp ) : $(all_fc_files )
191
+ $(file_contexts.tmp ) : $(all_fc_files ) $( all_fcfiles_with_nl ) $( built_nl )
169
192
@mkdir -p $(dir $@ )
170
193
$(hide ) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS ) $(PRIVATE_FC_FILES ) > $@
171
194
@@ -263,11 +286,12 @@ LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
263
286
include $(BUILD_SYSTEM ) /base_rules.mk
264
287
265
288
all_pc_files := $(call build_policy, property_contexts)
289
+ all_pcfiles_with_nl := $(call add_nl, $(all_pc_files ) , $(built_nl ) )
266
290
267
291
property_contexts.tmp := $(intermediates ) /property_contexts.tmp
268
- $(property_contexts.tmp ) : PRIVATE_PC_FILES := $(all_pc_files )
292
+ $(property_contexts.tmp ) : PRIVATE_PC_FILES := $(all_pcfiles_with_nl )
269
293
$(property_contexts.tmp ) : PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS )
270
- $(property_contexts.tmp ) : $(all_pc_files )
294
+ $(property_contexts.tmp ) : $(all_pc_files ) $( all_pcfiles_with_nl ) $( built_nl )
271
295
@mkdir -p $(dir $@ )
272
296
$(hide ) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS ) $(PRIVATE_PC_FILES ) > $@
273
297
@@ -315,11 +339,12 @@ LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
315
339
include $(BUILD_SYSTEM ) /base_rules.mk
316
340
317
341
all_svc_files := $(call build_policy, service_contexts)
342
+ all_svcfiles_with_nl := $(call add_nl, $(all_svc_files ) , $(built_nl ) )
318
343
319
344
service_contexts.tmp := $(intermediates ) /service_contexts.tmp
320
- $(service_contexts.tmp ) : PRIVATE_SVC_FILES := $(all_svc_files )
345
+ $(service_contexts.tmp ) : PRIVATE_SVC_FILES := $(all_svcfiles_with_nl )
321
346
$(service_contexts.tmp ) : PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS )
322
- $(service_contexts.tmp ) : $(all_svc_files )
347
+ $(service_contexts.tmp ) : $(all_svc_files ) $( all_svcfiles_with_nl ) $( built_nl )
323
348
@mkdir -p $(dir $@ )
324
349
$(hide ) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS ) $(PRIVATE_SVC_FILES ) > $@
325
350
@@ -407,5 +432,6 @@ built_pc :=
407
432
built_svc :=
408
433
built_general_sepolicy :=
409
434
built_general_sepolicy.conf :=
435
+ built_nl :=
410
436
411
437
include $(call all-makefiles-under,$(LOCAL_PATH ) )
0 commit comments