Set ART_APEX_DATA for odrefresh
... and run it with --no-refresh since we don't need to deal with
existing artifacts (which requires open the directory that authfs
currently does not support).
Fixes: 206468124
Test: see odrefresh exited 80 with other changes
Change-Id: Ied95c39ea1abca456ac852733bd684d3ed39d155
diff --git a/compos/src/compilation.rs b/compos/src/compilation.rs
index b726a1e..44b4049 100644
--- a/compos/src/compilation.rs
+++ b/compos/src/compilation.rs
@@ -86,14 +86,20 @@
android_root.push("system");
env::set_var("ANDROID_ROOT", &android_root);
+ let mut art_apex_data = mountpoint.clone();
+ art_apex_data.push(output_dir_fd.to_string());
+ env::set_var("ART_APEX_DATA", &art_apex_data);
+
let mut staging_dir = mountpoint;
staging_dir.push(output_dir_fd.to_string());
staging_dir.push("staging");
- create_dir(&staging_dir).context("Create staging directory")?;
+ create_dir(&staging_dir)
+ .with_context(|| format!("Create staging directory {}", staging_dir.display()))?;
let args = vec![
"odrefresh".to_string(),
format!("--zygote-arch={}", zygote_arch),
+ "--no-refresh".to_string(),
format!("--staging-dir={}", staging_dir.display()),
"--force-compile".to_string(),
];
@@ -103,7 +109,7 @@
// TODO(161471326): On success, sign all files in the output directory.
Ok(()) => Ok(CompilerOutput::ExitCode(0)),
Err(minijail::Error::ReturnCode(exit_code)) => {
- error!("dex2oat failed with exit code {}", exit_code);
+ error!("odrefresh failed with exit code {}", exit_code);
Ok(CompilerOutput::ExitCode(exit_code as i8))
}
Err(e) => {