Loading target/product/embedded.mk +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,14 @@ PRODUCT_PACKAGES += \ sepolicy \ service_contexts # AID Generation for # <pwd.h> and <grp.h> PRODUCT_PACKAGES += \ passwd \ group \ fs_config_files \ fs_config_dirs # Ensure that this property is always defined so that bionic_systrace.cpp # can rely on it being initially set by init. PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ Loading tools/fs_config/Android.mk +74 −4 Original line number Diff line number Diff line Loading @@ -81,19 +81,35 @@ LOCAL_SHARED_LIBRARIES := libcutils LOCAL_CFLAGS := -Werror -Wno-error=\#warnings ifneq ($(TARGET_FS_CONFIG_GEN),) system_android_filesystem_config := system/core/include/private/android_filesystem_config.h # Generate the "generated_oem_aid.h" file oem := $(local-generated-sources-dir)/generated_oem_aid.h $(oem): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(oem): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(oem): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(oem): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py oemaid --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(oem): $(TARGET_FS_CONFIG_GEN) $(LOCAL_PATH)/fs_config_generator.py $(transform-generated-source) # Generate the fs_config header gen := $(local-generated-sources-dir)/$(ANDROID_FS_CONFIG_H) $(gen): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(gen): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(gen): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(gen): $(TARGET_FS_CONFIG_GEN) $(LOCAL_PATH)/fs_config_generator.py $(gen): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(gen): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py fsconfig --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(gen): $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) $(LOCAL_PATH)/fs_config_generator.py $(transform-generated-source) LOCAL_GENERATED_SOURCES := $(gen) LOCAL_GENERATED_SOURCES := $(oem) $(gen) my_fs_config_h := $(gen) my_gen_oem_aid := $(oem) gen := oem := endif LOCAL_C_INCLUDES := $(dir $(my_fs_config_h)) LOCAL_C_INCLUDES := $(dir $(my_fs_config_h)) $(dir $(my_gen_oem_aid)) include $(BUILD_HOST_EXECUTABLE) fs_config_generate_bin := $(LOCAL_INSTALLED_MODULE) Loading Loading @@ -122,6 +138,60 @@ $(LOCAL_BUILT_MODULE): $(fs_config_generate_bin) @mkdir -p $(dir $@) $< -F -o $@ # The newer passwd/group targets are only generated if you # use the new TARGET_FS_CONFIG_GEN method. ifneq ($(TARGET_FS_CONFIG_GEN),) ################################## # Build the oemaid library when fs config files are present. # Intentionally break build if you require generated AIDS # header file, but are not using any fs config files. include $(CLEAR_VARS) LOCAL_MODULE := liboemaids LOCAL_EXPORT_C_INCLUDE_DIRS := $(dir $(my_gen_oem_aid)) LOCAL_EXPORT_C_INCLUDE_DEPS := $(my_gen_oem_aid) include $(BUILD_STATIC_LIBRARY) ################################## # Generate the system/etc/passwd text file for the target # This file may be empty if no AIDs are defined in # TARGET_FS_CONFIG_GEN files. include $(CLEAR_VARS) LOCAL_MODULE := passwd LOCAL_MODULE_CLASS := ETC include $(BUILD_SYSTEM)/base_rules.mk $(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) @mkdir -p $(dir $@) $(hide) $< passwd --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ ################################## # Generate the system/etc/group text file for the target # This file may be empty if no AIDs are defined in # TARGET_FS_CONFIG_GEN files. include $(CLEAR_VARS) LOCAL_MODULE := group LOCAL_MODULE_CLASS := ETC include $(BUILD_SYSTEM)/base_rules.mk $(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) @mkdir -p $(dir $@) $(hide) $< group --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ system_android_filesystem_config := endif ANDROID_FS_CONFIG_H := my_fs_config_h := fs_config_generate_bin := my_gen_oem_aid := tools/fs_config/README +26 −4 Original line number Diff line number Diff line Loading @@ -50,12 +50,12 @@ mode: prefixed with a 0, else mode is used as is. user: The exact, C define for a valid AID. Note custom AIDs can be defined in the Either the C define for a valid AID or the friendly name. For instance both AID_RADIO and radio are acceptable. Note custom AIDs can be defined in the AID section documented below. group: The exact, C define for a valid AID. Note custom AIDs can be defined in the AID section documented below. Same as user. caps: The name as declared in Loading @@ -82,7 +82,8 @@ value: <number> Where: [AID_<name>] The <name> can be any valid character for a #define identifier in C. The <name> can contain characters in the set uppercase, numbers and underscores. value: A valid C style number string. Hex, octal, binary and decimal are supported. Loading Loading @@ -118,3 +119,24 @@ The declared AIDS are sorted in ascending numerical order based on the option "v representation of value is preserved. Both choices were made for maximum readability of the generated file and to line up files. Sync lines are placed with the source file as comments in the generated header file. For OEMs wishing to use the define AIDs in their native code, one can access the generated header file like so: 1. In your C code just #include "generated_oem_aid.h" and start using the declared identifiers. 2. In your Makefile add this static library like so: LOCAL_STATIC_LIBRARIES := liboemaids Unit Tests: From within the fs_config directory, unit tests can be executed like so: $ python -m unittest test_fs_config_generator.Tests ............. ---------------------------------------------------------------------- Ran 13 tests in 0.004s OK One could also use nose if they would like: $ nose2 To add new tests, simply add a test_<xxx> method to the test class. It will automatically get picked up and added to the test suite. tools/fs_config/default/android_filesystem_config.h +0 −7 Original line number Diff line number Diff line Loading @@ -19,13 +19,6 @@ ** by the device side of adb. */ /* ** Resorting to the default file means someone requested fs_config_dirs or ** fs_config_files in their device configuration without providing an ** associated header. */ #warning No device-supplied android_filesystem_config.h, using empty default. /* Rules for directories. ** These rules are applied based on "first match", so they ** should start with the most specific path and work their Loading Loading
target/product/embedded.mk +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,14 @@ PRODUCT_PACKAGES += \ sepolicy \ service_contexts # AID Generation for # <pwd.h> and <grp.h> PRODUCT_PACKAGES += \ passwd \ group \ fs_config_files \ fs_config_dirs # Ensure that this property is always defined so that bionic_systrace.cpp # can rely on it being initially set by init. PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ Loading
tools/fs_config/Android.mk +74 −4 Original line number Diff line number Diff line Loading @@ -81,19 +81,35 @@ LOCAL_SHARED_LIBRARIES := libcutils LOCAL_CFLAGS := -Werror -Wno-error=\#warnings ifneq ($(TARGET_FS_CONFIG_GEN),) system_android_filesystem_config := system/core/include/private/android_filesystem_config.h # Generate the "generated_oem_aid.h" file oem := $(local-generated-sources-dir)/generated_oem_aid.h $(oem): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(oem): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(oem): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(oem): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py oemaid --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(oem): $(TARGET_FS_CONFIG_GEN) $(LOCAL_PATH)/fs_config_generator.py $(transform-generated-source) # Generate the fs_config header gen := $(local-generated-sources-dir)/$(ANDROID_FS_CONFIG_H) $(gen): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(gen): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(gen): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(gen): $(TARGET_FS_CONFIG_GEN) $(LOCAL_PATH)/fs_config_generator.py $(gen): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(gen): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/fs_config_generator.py fsconfig --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ $(gen): $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) $(LOCAL_PATH)/fs_config_generator.py $(transform-generated-source) LOCAL_GENERATED_SOURCES := $(gen) LOCAL_GENERATED_SOURCES := $(oem) $(gen) my_fs_config_h := $(gen) my_gen_oem_aid := $(oem) gen := oem := endif LOCAL_C_INCLUDES := $(dir $(my_fs_config_h)) LOCAL_C_INCLUDES := $(dir $(my_fs_config_h)) $(dir $(my_gen_oem_aid)) include $(BUILD_HOST_EXECUTABLE) fs_config_generate_bin := $(LOCAL_INSTALLED_MODULE) Loading Loading @@ -122,6 +138,60 @@ $(LOCAL_BUILT_MODULE): $(fs_config_generate_bin) @mkdir -p $(dir $@) $< -F -o $@ # The newer passwd/group targets are only generated if you # use the new TARGET_FS_CONFIG_GEN method. ifneq ($(TARGET_FS_CONFIG_GEN),) ################################## # Build the oemaid library when fs config files are present. # Intentionally break build if you require generated AIDS # header file, but are not using any fs config files. include $(CLEAR_VARS) LOCAL_MODULE := liboemaids LOCAL_EXPORT_C_INCLUDE_DIRS := $(dir $(my_gen_oem_aid)) LOCAL_EXPORT_C_INCLUDE_DEPS := $(my_gen_oem_aid) include $(BUILD_STATIC_LIBRARY) ################################## # Generate the system/etc/passwd text file for the target # This file may be empty if no AIDs are defined in # TARGET_FS_CONFIG_GEN files. include $(CLEAR_VARS) LOCAL_MODULE := passwd LOCAL_MODULE_CLASS := ETC include $(BUILD_SYSTEM)/base_rules.mk $(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) @mkdir -p $(dir $@) $(hide) $< passwd --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ ################################## # Generate the system/etc/group text file for the target # This file may be empty if no AIDs are defined in # TARGET_FS_CONFIG_GEN files. include $(CLEAR_VARS) LOCAL_MODULE := group LOCAL_MODULE_CLASS := ETC include $(BUILD_SYSTEM)/base_rules.mk $(LOCAL_BUILT_MODULE): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) $(LOCAL_BUILT_MODULE): PRIVATE_TARGET_FS_CONFIG_GEN := $(TARGET_FS_CONFIG_GEN) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_GEN) $(system_android_filesystem_config) @mkdir -p $(dir $@) $(hide) $< group --aid-header=$(PRIVATE_ANDROID_FS_HDR) $(PRIVATE_TARGET_FS_CONFIG_GEN) > $@ system_android_filesystem_config := endif ANDROID_FS_CONFIG_H := my_fs_config_h := fs_config_generate_bin := my_gen_oem_aid :=
tools/fs_config/README +26 −4 Original line number Diff line number Diff line Loading @@ -50,12 +50,12 @@ mode: prefixed with a 0, else mode is used as is. user: The exact, C define for a valid AID. Note custom AIDs can be defined in the Either the C define for a valid AID or the friendly name. For instance both AID_RADIO and radio are acceptable. Note custom AIDs can be defined in the AID section documented below. group: The exact, C define for a valid AID. Note custom AIDs can be defined in the AID section documented below. Same as user. caps: The name as declared in Loading @@ -82,7 +82,8 @@ value: <number> Where: [AID_<name>] The <name> can be any valid character for a #define identifier in C. The <name> can contain characters in the set uppercase, numbers and underscores. value: A valid C style number string. Hex, octal, binary and decimal are supported. Loading Loading @@ -118,3 +119,24 @@ The declared AIDS are sorted in ascending numerical order based on the option "v representation of value is preserved. Both choices were made for maximum readability of the generated file and to line up files. Sync lines are placed with the source file as comments in the generated header file. For OEMs wishing to use the define AIDs in their native code, one can access the generated header file like so: 1. In your C code just #include "generated_oem_aid.h" and start using the declared identifiers. 2. In your Makefile add this static library like so: LOCAL_STATIC_LIBRARIES := liboemaids Unit Tests: From within the fs_config directory, unit tests can be executed like so: $ python -m unittest test_fs_config_generator.Tests ............. ---------------------------------------------------------------------- Ran 13 tests in 0.004s OK One could also use nose if they would like: $ nose2 To add new tests, simply add a test_<xxx> method to the test class. It will automatically get picked up and added to the test suite.
tools/fs_config/default/android_filesystem_config.h +0 −7 Original line number Diff line number Diff line Loading @@ -19,13 +19,6 @@ ** by the device side of adb. */ /* ** Resorting to the default file means someone requested fs_config_dirs or ** fs_config_files in their device configuration without providing an ** associated header. */ #warning No device-supplied android_filesystem_config.h, using empty default. /* Rules for directories. ** These rules are applied based on "first match", so they ** should start with the most specific path and work their Loading