The fs_config_generator.py
tool uses the platform android_filesystem_config.h
and the TARGET_FS_CONFIG_GEN
files to generate the following:
fs_config_dirs
and fs_config_files
files for each partitionpasswd
and group
files for each partitiongenerated_oem_aid.h
headerfs_config_dirs
and fs_config_files
The fs_config_dirs
and fs_config_files
binary files are interpreted by the libcutils fs_config()
function, along with the built-in defaults, to serve as overrides to complete the results. The Target files are used by filesystem and adb tools to ensure that the file and directory properties are preserved during runtime operations. The host files in the $OUT
directory are used in the final stages when building the filesystem images to set the file and directory properties.
See ./fs_config_generator.py fsconfig --help
for how these files are generated.
passwd
and group
filesThe passwd
and group
files are formatted as documented in man pages passwd(5) and group(5) and used by bionic for implementing getpwnam()
and related functions.
See ./fs_config_generator.py passwd --help
and ./fs_config_generator.py group --help
for how these files are generated.
generated_oem_aid.h
headerThe generated_oem_aid.h
creates identifiers for non-platform AIDs for developers wishing to use them in their native code. To do so, include the oemaids_headers
header library in the corresponding makefile and #include "generated_oem_aid.h"
in the code wishing to use these identifiers.
See ./fs_config_generator.py oemaid --help
for how this file is generated.
See the documentation on source.android.com for details and examples.
Ordering within the TARGET_FS_CONFIG_GEN
files is not relevant. The paths for files are sorted like so within their respective array definition:
Given these paths:
paths=['ac', 'a', 'acd', 'an', 'a*', 'aa', 'ac*']
The sort order would be:
paths=['a', 'aa', 'ac', 'acd', 'an', 'ac*', 'a*']
Thus the fs_config
tools will match on specified paths before attempting prefix, and match on the longest matching prefix.
The declared AIDs are sorted in ascending numerical order based on the option "value". The string 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.
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.