summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreehugger Robot2018-07-27 12:15:05 -0500
committerGerrit Code Review2018-07-27 12:15:05 -0500
commit18be1e2f7e27de79b2a3c2197b8bb30c958a5644 (patch)
tree84e2a2307f6cb9c17eb072a6b6a455dd680985dc
parent78f5431ff1e369fa583caf92c789dbccd7656de0 (diff)
parent361371009902150d332cb23575f5833a57cf0ef0 (diff)
downloadplatform-system-core-18be1e2f7e27de79b2a3c2197b8bb30c958a5644.tar.gz
platform-system-core-18be1e2f7e27de79b2a3c2197b8bb30c958a5644.tar.xz
platform-system-core-18be1e2f7e27de79b2a3c2197b8bb30c958a5644.zip
Merge "Add support for /product-services partition."
-rw-r--r--init/init.cpp3
-rw-r--r--init/property_service.cpp1
-rw-r--r--libcutils/fs_config.cpp5
-rw-r--r--rootdir/Android.mk6
-rw-r--r--rootdir/etc/ld.config.txt14
5 files changed, 27 insertions, 2 deletions
diff --git a/init/init.cpp b/init/init.cpp
index 6569871b8..73194bdd9 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -119,6 +119,9 @@ static void LoadBootScripts(ActionManager& action_manager, ServiceList& service_
119 if (!parser.ParseConfig("/product/etc/init")) { 119 if (!parser.ParseConfig("/product/etc/init")) {
120 late_import_paths.emplace_back("/product/etc/init"); 120 late_import_paths.emplace_back("/product/etc/init");
121 } 121 }
122 if (!parser.ParseConfig("/product-services/etc/init")) {
123 late_import_paths.emplace_back("/product-services/etc/init");
124 }
122 if (!parser.ParseConfig("/odm/etc/init")) { 125 if (!parser.ParseConfig("/odm/etc/init")) {
123 late_import_paths.emplace_back("/odm/etc/init"); 126 late_import_paths.emplace_back("/odm/etc/init");
124 } 127 }
diff --git a/init/property_service.cpp b/init/property_service.cpp
index d1c427dba..c0d811fc6 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -691,6 +691,7 @@ void property_load_boot_defaults() {
691 } 691 }
692 } 692 }
693 load_properties_from_file("/product/build.prop", NULL); 693 load_properties_from_file("/product/build.prop", NULL);
694 load_properties_from_file("/product-services/build.prop", NULL);
694 load_properties_from_file("/odm/default.prop", NULL); 695 load_properties_from_file("/odm/default.prop", NULL);
695 load_properties_from_file("/vendor/default.prop", NULL); 696 load_properties_from_file("/vendor/default.prop", NULL);
696 697
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
index 267b7b356..48def6f95 100644
--- a/libcutils/fs_config.cpp
+++ b/libcutils/fs_config.cpp
@@ -130,7 +130,7 @@ static const char* conf[][2] = {
130// Vendor entries should be done via a vendor or device specific config.fs. 130// Vendor entries should be done via a vendor or device specific config.fs.
131// See https://source.android.com/devices/tech/config/filesystem#using-file-system-capabilities 131// See https://source.android.com/devices/tech/config/filesystem#using-file-system-capabilities
132static const struct fs_path_config android_files[] = { 132static const struct fs_path_config android_files[] = {
133 // clang-format off 133 // clang-format off
134 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app/*" }, 134 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app/*" },
135 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-ephemeral/*" }, 135 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-ephemeral/*" },
136 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private/*" }, 136 { 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private/*" },
@@ -149,6 +149,7 @@ static const struct fs_path_config android_files[] = {
149 { 00444, AID_ROOT, AID_ROOT, 0, oem_conf_dir + 1 }, 149 { 00444, AID_ROOT, AID_ROOT, 0, oem_conf_dir + 1 },
150 { 00444, AID_ROOT, AID_ROOT, 0, oem_conf_file + 1 }, 150 { 00444, AID_ROOT, AID_ROOT, 0, oem_conf_file + 1 },
151 { 00600, AID_ROOT, AID_ROOT, 0, "product/build.prop" }, 151 { 00600, AID_ROOT, AID_ROOT, 0, "product/build.prop" },
152 { 00600, AID_ROOT, AID_ROOT, 0, "product-services/build.prop" },
152 { 00750, AID_ROOT, AID_SHELL, 0, "sbin/fs_mgr" }, 153 { 00750, AID_ROOT, AID_SHELL, 0, "sbin/fs_mgr" },
153 { 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump32" }, 154 { 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump32" },
154 { 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump64" }, 155 { 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump64" },
@@ -200,7 +201,7 @@ static const struct fs_path_config android_files[] = {
200 { 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" }, 201 { 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" },
201 { 00755, AID_ROOT, AID_SHELL, 0, "vendor/xbin/*" }, 202 { 00755, AID_ROOT, AID_SHELL, 0, "vendor/xbin/*" },
202 { 00644, AID_ROOT, AID_ROOT, 0, 0 }, 203 { 00644, AID_ROOT, AID_ROOT, 0, 0 },
203 // clang-format on 204 // clang-format on
204}; 205};
205#ifndef __ANDROID_VNDK__ 206#ifndef __ANDROID_VNDK__
206auto __for_testing_only__android_files = android_files; 207auto __for_testing_only__android_files = android_files;
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index 478b8d094..87eb733d5 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -93,6 +93,11 @@ ifdef BOARD_USES_PRODUCTIMAGE
93else 93else
94 LOCAL_POST_INSTALL_CMD += ; ln -sf /system/product $(TARGET_ROOT_OUT)/product 94 LOCAL_POST_INSTALL_CMD += ; ln -sf /system/product $(TARGET_ROOT_OUT)/product
95endif 95endif
96ifdef BOARD_USES_PRODUCT_SERVICES_IMAGE
97 LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/product-services
98else
99 LOCAL_POST_INSTALL_CMD += ; ln -sf /system/product-services $(TARGET_ROOT_OUT)/product-services
100endif
96 101
97# For /odm partition. 102# For /odm partition.
98LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/odm 103LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/odm
@@ -202,6 +207,7 @@ $(2): $(1)
202 $$(hide) sed -i -e 's?%SANITIZER_RUNTIME_LIBRARIES%?$$(PRIVATE_SANITIZER_RUNTIME_LIBRARIES)?g' $$@ 207 $$(hide) sed -i -e 's?%SANITIZER_RUNTIME_LIBRARIES%?$$(PRIVATE_SANITIZER_RUNTIME_LIBRARIES)?g' $$@
203 $$(hide) sed -i -e 's?%VNDK_VER%?$$(PRIVATE_VNDK_VERSION)?g' $$@ 208 $$(hide) sed -i -e 's?%VNDK_VER%?$$(PRIVATE_VNDK_VERSION)?g' $$@
204 $$(hide) sed -i -e 's?%PRODUCT%?$$(TARGET_COPY_OUT_PRODUCT)?g' $$@ 209 $$(hide) sed -i -e 's?%PRODUCT%?$$(TARGET_COPY_OUT_PRODUCT)?g' $$@
210 $$(hide) sed -i -e 's?%PRODUCTSERVICES%?$$(TARGET_COPY_OUT_PRODUCTSERVICES)?g' $$@
205 211
206llndk_libraries_list := 212llndk_libraries_list :=
207vndksp_libraries_list := 213vndksp_libraries_list :=
diff --git a/rootdir/etc/ld.config.txt b/rootdir/etc/ld.config.txt
index 42dc7abe7..7d22a3acc 100644
--- a/rootdir/etc/ld.config.txt
+++ b/rootdir/etc/ld.config.txt
@@ -8,6 +8,7 @@
8dir.system = /system/bin/ 8dir.system = /system/bin/
9dir.system = /system/xbin/ 9dir.system = /system/xbin/
10dir.system = /%PRODUCT%/bin/ 10dir.system = /%PRODUCT%/bin/
11dir.system = /%PRODUCTSERVICES%/bin/
11 12
12dir.vendor = /odm/bin/ 13dir.vendor = /odm/bin/
13dir.vendor = /vendor/bin/ 14dir.vendor = /vendor/bin/
@@ -40,6 +41,7 @@ namespace.default.isolated = true
40 41
41namespace.default.search.paths = /system/${LIB} 42namespace.default.search.paths = /system/${LIB}
42namespace.default.search.paths += /%PRODUCT%/${LIB} 43namespace.default.search.paths += /%PRODUCT%/${LIB}
44namespace.default.search.paths += /%PRODUCTSERVICES%/${LIB}
43 45
44# We can't have entire /system/${LIB} as permitted paths because doing so 46# We can't have entire /system/${LIB} as permitted paths because doing so
45# makes it possible to load libs in /system/${LIB}/vndk* directories by 47# makes it possible to load libs in /system/${LIB}/vndk* directories by
@@ -52,6 +54,7 @@ namespace.default.permitted.paths = /system/${LIB}/drm
52namespace.default.permitted.paths += /system/${LIB}/extractors 54namespace.default.permitted.paths += /system/${LIB}/extractors
53namespace.default.permitted.paths += /system/${LIB}/hw 55namespace.default.permitted.paths += /system/${LIB}/hw
54namespace.default.permitted.paths += /%PRODUCT%/${LIB} 56namespace.default.permitted.paths += /%PRODUCT%/${LIB}
57namespace.default.permitted.paths += /%PRODUCTSERVICES%/${LIB}
55# These are where odex files are located. libart has to be able to dlopen the files 58# These are where odex files are located. libart has to be able to dlopen the files
56namespace.default.permitted.paths += /system/framework 59namespace.default.permitted.paths += /system/framework
57namespace.default.permitted.paths += /system/app 60namespace.default.permitted.paths += /system/app
@@ -66,6 +69,9 @@ namespace.default.permitted.paths += /oem/app
66namespace.default.permitted.paths += /%PRODUCT%/framework 69namespace.default.permitted.paths += /%PRODUCT%/framework
67namespace.default.permitted.paths += /%PRODUCT%/app 70namespace.default.permitted.paths += /%PRODUCT%/app
68namespace.default.permitted.paths += /%PRODUCT%/priv-app 71namespace.default.permitted.paths += /%PRODUCT%/priv-app
72namespace.default.permitted.paths += /%PRODUCTSERVICES%/framework
73namespace.default.permitted.paths += /%PRODUCTSERVICES%/app
74namespace.default.permitted.paths += /%PRODUCTSERVICES%/priv-app
69namespace.default.permitted.paths += /data 75namespace.default.permitted.paths += /data
70namespace.default.permitted.paths += /mnt/expand 76namespace.default.permitted.paths += /mnt/expand
71 77
@@ -73,6 +79,8 @@ namespace.default.asan.search.paths = /data/asan/system/${LIB}
73namespace.default.asan.search.paths += /system/${LIB} 79namespace.default.asan.search.paths += /system/${LIB}
74namespace.default.asan.search.paths += /data/asan/product/${LIB} 80namespace.default.asan.search.paths += /data/asan/product/${LIB}
75namespace.default.asan.search.paths += /product/${LIB} 81namespace.default.asan.search.paths += /product/${LIB}
82namespace.default.asan.search.paths += /data/asan/product-services/${LIB}
83namespace.default.asan.search.paths += /product-services/${LIB}
76 84
77namespace.default.asan.permitted.paths = /data 85namespace.default.asan.permitted.paths = /data
78namespace.default.asan.permitted.paths += /system/${LIB}/drm 86namespace.default.asan.permitted.paths += /system/${LIB}/drm
@@ -92,6 +100,10 @@ namespace.default.asan.permitted.paths += /%PRODUCT%/${LIB}
92namespace.default.asan.permitted.paths += /%PRODUCT%/framework 100namespace.default.asan.permitted.paths += /%PRODUCT%/framework
93namespace.default.asan.permitted.paths += /%PRODUCT%/app 101namespace.default.asan.permitted.paths += /%PRODUCT%/app
94namespace.default.asan.permitted.paths += /%PRODUCT%/priv-app 102namespace.default.asan.permitted.paths += /%PRODUCT%/priv-app
103namespace.default.asan.permitted.paths += /%PRODUCTSERVICES%/${LIB}
104namespace.default.asan.permitted.paths += /%PRODUCTSERVICES%/framework
105namespace.default.asan.permitted.paths += /%PRODUCTSERVICES%/app
106namespace.default.asan.permitted.paths += /%PRODUCTSERVICES%/priv-app
95namespace.default.asan.permitted.paths += /mnt/expand 107namespace.default.asan.permitted.paths += /mnt/expand
96 108
97############################################################################### 109###############################################################################
@@ -328,6 +340,7 @@ namespace.system.isolated = false
328 340
329namespace.system.search.paths = /system/${LIB} 341namespace.system.search.paths = /system/${LIB}
330namespace.system.search.paths += /%PRODUCT%/${LIB} 342namespace.system.search.paths += /%PRODUCT%/${LIB}
343namespace.system.search.paths += /%PRODUCTSERVICES%/${LIB}
331 344
332namespace.system.asan.search.paths = /data/asan/system/${LIB} 345namespace.system.asan.search.paths = /data/asan/system/${LIB}
333namespace.system.asan.search.paths += /system/${LIB} 346namespace.system.asan.search.paths += /system/${LIB}
@@ -346,3 +359,4 @@ namespace.system.asan.search.paths += /product/${LIB}
346namespace.default.isolated = false 359namespace.default.isolated = false
347namespace.default.search.paths = /system/${LIB} 360namespace.default.search.paths = /system/${LIB}
348namespace.default.search.paths += /%PRODUCT%/${LIB} 361namespace.default.search.paths += /%PRODUCT%/${LIB}
362namespace.default.search.paths += /%PRODUCTSERVICES%/${LIB}