Snap for 5671249 from 0b4311702f735476c098bc398a4ca444fa00a4a4 to qt-qpr1-release

Change-Id: Id770a7cc8c21e6ef7b6780fc159dd2c627f8e3fb
diff --git a/libcutils/Android.bp b/libcutils/Android.bp
index 619bc56..df07d29 100644
--- a/libcutils/Android.bp
+++ b/libcutils/Android.bp
@@ -169,9 +169,13 @@
                 // releases, exclude qtaguid.cpp from the VNDK-SP variant.
                 "qtaguid.cpp",
             ],
-        }
+        },
     },
 
+    defaults: [
+        "libprocessgroup_impl_provider",
+    ],
+
     shared_libs: [
         "liblog",
         "libbase",
@@ -180,11 +184,9 @@
         "libbase_headers",
         "libcutils_headers",
         "libutils_headers",
-        "libprocessgroup_headers",
     ],
     export_header_lib_headers: [
         "libcutils_headers",
-        "libprocessgroup_headers",
     ],
     local_include_dirs: ["include"],
 
diff --git a/libprocessgroup/Android.bp b/libprocessgroup/Android.bp
index 0207a75..f486d6c 100644
--- a/libprocessgroup/Android.bp
+++ b/libprocessgroup/Android.bp
@@ -14,13 +14,8 @@
     },
 }
 
+// TODO: remove all usages
 cc_library {
-    srcs: [
-        "cgroup_map.cpp",
-        "processgroup.cpp",
-        "sched_policy.cpp",
-        "task_profiles.cpp",
-    ],
     name: "libprocessgroup",
     host_supported: true,
     recovery_available: true,
@@ -29,13 +24,47 @@
         enabled: true,
         support_system_process: true,
     },
-    shared_libs: [
-        "libbase",
-        "libcgrouprc",
+}
+
+cc_defaults {
+    name: "libprocessgroup_impl_libs",
+    target: {
+        linux: {
+            shared_libs: [
+                "libbase",
+                "libcgrouprc",
+            ],
+            static_libs: [
+                "libjsoncpp",
+            ],
+        },
+    },
+}
+
+cc_defaults {
+    name: "libprocessgroup_impl_provider",
+    defaults: ["libprocessgroup_impl_libs"],
+    target: {
+        linux: {
+            whole_static_libs: [
+                "libprocessgroup_impl",
+            ],
+        },
+    },
+}
+
+cc_library {
+    name: "libprocessgroup_impl",
+    defaults: ["libprocessgroup_impl_libs"],
+    srcs: [
+        "cgroup_map.cpp",
+        "processgroup.cpp",
+        "sched_policy.cpp",
+        "task_profiles.cpp",
     ],
-    static_libs: [
-        "libjsoncpp",
-    ],
+    host_supported: true,
+    recovery_available: true,
+    vendor_available: true,
     // for cutils/android_filesystem_config.h
     header_libs: [
         "libcutils_headers",
diff --git a/logcat/Android.bp b/logcat/Android.bp
index 5030b15..0543aba 100644
--- a/logcat/Android.bp
+++ b/logcat/Android.bp
@@ -24,8 +24,8 @@
     ],
     shared_libs: [
         "libbase",
+        "libcutils",
         "libpcrecpp",
-        "libprocessgroup",
     ],
     static_libs: ["liblog"],
     logtags: ["event.logtags"],
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 2601997..c042c48 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -345,8 +345,11 @@
     trigger early-boot
     trigger boot
 
-on post-fs
+on early-fs
+    # Once metadata has been mounted, we'll need vold to deal with userdata checkpointing
     start vold
+
+on post-fs
     exec - system system -- /system/bin/vdc checkpoint markBootAttempt
 
     # Once everything is setup, no need to modify /.