b554e594ca
This is to migrate sepolicy Makefiles into Soong. For the first part, file_contexts, hwservice_contexts, property_contexts, and service_contexts are migrated. Build-time tests for contexts files are still in Makefile; they will also be done with Soong after porting the module sepolicy. The motivation of migrating is based on generating property_contexts dynamically: if we were to amend contexts files at build time in the future, it would be nicer to manage them in Soong. To do that, building contexts files with Soong can be very helpful. Bug: 127949646 Bug: 129377144 Test: 1) Build blueline-userdebug, flash, and boot. Test: 2) Build blueline-userdebug with TARGET_FLATTEN_APEX=true, flash, and boot. Test: 3) Build aosp_arm-userdebug. Change-Id: I576f6f20686f6f2121204f76657274696d652121
250 lines
6.4 KiB
Makefile
250 lines
6.4 KiB
Makefile
# Copyright (C) 2019 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
# TODO: move tests into Soong after refactoring sepolicy module (b/130693869)
|
|
|
|
# Run host-side test with contexts files and the sepolicy file.
|
|
# $(1): paths to contexts files
|
|
# $(2): path to the host tool
|
|
# $(3): additional argument to be passed to the tool
|
|
define run_contexts_test
|
|
test_out := $$(intermediates)/$$(LOCAL_MODULE)
|
|
$$(test_out): PRIVATE_CONTEXTS := $(1)
|
|
$$(test_out): PRIVATE_SEPOLICY := $$(built_sepolicy)
|
|
$$(test_out): $(2) $(1) $$(built_sepolicy)
|
|
$$(hide) $$< $(3) $$(PRIVATE_SEPOLICY) $$(PRIVATE_CONTEXTS)
|
|
$$(hide) mkdir -p $$(dir $$@)
|
|
$$(hide) touch $$@
|
|
test_out :=
|
|
endef
|
|
|
|
system_out := $(TARGET_OUT)/etc/selinux
|
|
product_out := $(TARGET_OUT_PRODUCT)/etc/selinux
|
|
vendor_out := $(TARGET_OUT_VENDOR)/etc/selinux
|
|
odm_out := $(TARGET_OUT_ODM)/etc/selinux
|
|
|
|
checkfc := $(HOST_OUT_EXECUTABLES)/checkfc
|
|
property_info_checker := $(HOST_OUT_EXECUTABLES)/property_info_checker
|
|
|
|
##################################
|
|
LOCAL_MODULE := plat_file_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(system_out)/plat_file_contexts, $(checkfc),))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := product_file_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_PRODUCT_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(product_out)/product_file_contexts, $(checkfc),))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := vendor_file_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_VENDOR_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(vendor_out)/vendor_file_contexts, $(checkfc),))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := odm_file_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_ODM_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(odm_out)/odm_file_contexts, $(checkfc),))
|
|
|
|
##################################
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := plat_hwservice_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(system_out)/plat_hwservice_contexts, $(checkfc), -e -l))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := product_hwservice_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_PRODUCT_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(product_out)/product_hwservice_contexts, $(checkfc), -e -l))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := vendor_hwservice_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_VENDOR_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(vendor_out)/vendor_hwservice_contexts, $(checkfc), -e -l))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := odm_hwservice_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_ODM_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(odm_out)/odm_hwservice_contexts, $(checkfc), -e -l))
|
|
|
|
##################################
|
|
|
|
pc_files := $(system_out)/plat_property_contexts
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := plat_property_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(pc_files), $(property_info_checker),))
|
|
|
|
##################################
|
|
|
|
pc_files += $(vendor_out)/vendor_property_contexts
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := vendor_property_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_VENDOR_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(pc_files), $(property_info_checker),))
|
|
|
|
##################################
|
|
|
|
ifdef BOARD_ODM_SEPOLICY_DIRS
|
|
|
|
pc_files += $(odm_out)/odm_property_contexts
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := odm_property_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_ODM_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(pc_files), $(property_info_checker),))
|
|
|
|
endif
|
|
|
|
##################################
|
|
|
|
ifdef HAS_PRODUCT_SEPOLICY
|
|
|
|
pc_files += $(product_out)/product_property_contexts
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := product_property_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_PRODUCT_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(pc_files), $(property_info_checker),))
|
|
|
|
endif
|
|
|
|
pc_files :=
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := plat_service_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(system_out)/plat_service_contexts, $(checkfc), -s))
|
|
|
|
##################################
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := product_service_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_PRODUCT_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(product_out)/product_service_contexts, $(checkfc), -s))
|
|
|
|
##################################
|
|
# nonplat_service_contexts is only allowed on non-full-treble devices
|
|
ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := vendor_service_contexts_test
|
|
LOCAL_MODULE_CLASS := ETC
|
|
LOCAL_VENDOR_MODULE := true
|
|
LOCAL_MODULE_TAGS := tests
|
|
|
|
include $(BUILD_SYSTEM)/base_rules.mk
|
|
|
|
$(eval $(call run_contexts_test, $(vendor_out)/vendor_service_contexts, $(checkfc), -s))
|
|
|
|
endif
|
|
|
|
system_out :=
|
|
product_out :=
|
|
vendor_out :=
|
|
odm_out :=
|
|
checkfc :=
|
|
property_info_checker :=
|
|
run_contexts_test :=
|