flag guard transition to use mainline aconfigd am: f76d76e70d

Original change: https://android-review.googlesource.com/c/platform/system/server_configurable_flags/+/3388573

Change-Id: I7835d0260a3a99e284591caea698df2da50644c7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/aconfigd/Android.bp b/aconfigd/Android.bp
index 92efa61..61621d8 100644
--- a/aconfigd/Android.bp
+++ b/aconfigd/Android.bp
@@ -122,6 +122,11 @@
     name: "libaconfig_new_storage_flags_rust",
     crate_name: "aconfig_new_storage_flags",
     aconfig_declarations: "aconfig_new_storage_flags",
+    apex_available: [
+        "//apex_available:anyapex",
+        "//apex_available:platform",
+    ],
+    min_sdk_version: "34",
 }
 
 java_aconfig_library {
diff --git a/aconfigd/new_aconfig_storage.aconfig b/aconfigd/new_aconfig_storage.aconfig
index 4a0a9fe..094bc94 100644
--- a/aconfigd/new_aconfig_storage.aconfig
+++ b/aconfigd/new_aconfig_storage.aconfig
@@ -29,4 +29,5 @@
   namespace: "core_experiments_team_internal"
   bug: "369808805"
   description: "When enabled, launch aconfigd from config infra module."
+  is_fixed_read_only: true
 }
diff --git a/aconfigd/src/aconfigd_commands.rs b/aconfigd/src/aconfigd_commands.rs
index a82a8a9..3455fc0 100644
--- a/aconfigd/src/aconfigd_commands.rs
+++ b/aconfigd/src/aconfigd_commands.rs
@@ -27,6 +27,7 @@
 const ACONFIGD_SOCKET: &str = "aconfigd_system";
 const ACONFIGD_ROOT_DIR: &str = "/metadata/aconfig";
 const STORAGE_RECORDS: &str = "/metadata/aconfig/storage_records.pb";
+const PLATFORM_STORAGE_RECORDS: &str = "/metadata/aconfig/platform_storage_records.pb";
 const ACONFIGD_SOCKET_BACKLOG: i32 = 8;
 
 /// start aconfigd socket service
@@ -41,8 +42,14 @@
 
     let listener = UnixListener::from(fd);
 
+    let storage_records = if aconfig_new_storage_flags::enable_aconfigd_from_mainline() {
+        PLATFORM_STORAGE_RECORDS
+    } else {
+        STORAGE_RECORDS
+    };
+
     if aconfig_new_storage_flags::enable_full_rust_system_aconfigd() {
-        let mut aconfigd = Aconfigd::new(Path::new(ACONFIGD_ROOT_DIR), Path::new(STORAGE_RECORDS));
+        let mut aconfigd = Aconfigd::new(Path::new(ACONFIGD_ROOT_DIR), Path::new(storage_records));
         aconfigd.initialize_from_storage_record()?;
 
         debug!("start waiting for a new client connection through socket.");
@@ -59,7 +66,7 @@
             }
         }
     } else {
-        let aconfigd = CXXAconfigd::new(ACONFIGD_ROOT_DIR, STORAGE_RECORDS);
+        let aconfigd = CXXAconfigd::new(ACONFIGD_ROOT_DIR, storage_records);
         aconfigd
             .initialize_in_memory_storage_records()
             .map_err(|e| anyhow!("failed to init memory storage records: {e}"))?;
@@ -116,13 +123,19 @@
 
 /// initialize platform storage files
 pub fn platform_init() -> Result<()> {
+    let storage_records = if aconfig_new_storage_flags::enable_aconfigd_from_mainline() {
+        PLATFORM_STORAGE_RECORDS
+    } else {
+        STORAGE_RECORDS
+    };
+
     if aconfig_new_storage_flags::enable_full_rust_system_aconfigd() {
-        let mut aconfigd = Aconfigd::new(Path::new(ACONFIGD_ROOT_DIR), Path::new(STORAGE_RECORDS));
+        let mut aconfigd = Aconfigd::new(Path::new(ACONFIGD_ROOT_DIR), Path::new(storage_records));
         aconfigd.remove_boot_files()?;
         aconfigd.initialize_from_storage_record()?;
         Ok(aconfigd.initialize_platform_storage()?)
     } else {
-        CXXAconfigd::new(ACONFIGD_ROOT_DIR, STORAGE_RECORDS)
+        CXXAconfigd::new(ACONFIGD_ROOT_DIR, storage_records)
             .initialize_platform_storage()
             .map_err(|e| anyhow!("failed to init platform storage: {e}"))
     }
diff --git a/aconfigd/src/main.rs b/aconfigd/src/main.rs
index 35f9936..7867f41 100644
--- a/aconfigd/src/main.rs
+++ b/aconfigd/src/main.rs
@@ -70,7 +70,13 @@
     let command_return = match cli.command {
         Command::StartSocket => aconfigd_commands::start_socket(),
         Command::PlatformInit => aconfigd_commands::platform_init(),
-        Command::MainlineInit => aconfigd_commands::mainline_init(),
+        Command::MainlineInit => {
+            if aconfig_new_storage_flags::enable_aconfigd_from_mainline() {
+                info!("aconfigd_mainline is enabled, skipping mainline init");
+                std::process::exit(1);
+            }
+            aconfigd_commands::mainline_init()
+        }
     };
 
     if let Err(errmsg) = command_return {