Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6af6b97a authored by Jiakai Zhang's avatar Jiakai Zhang
Browse files

Don't infer the default boot image location in otapreopt.

otapreopt calls derive_classpath but only takes BOOTCLASSPATH from the
output, not DEX2OATBOOTCLASSPATH or other env variables. The runtime
cannot handle this case when inferring the default boot image location
once aosp/2470962 is merged.

We don't have a boot image for otapreopt anyway, so just don't attempt
to infer the default boot image location.

Bug: 272573887
Test: ABTD (http://go/abtd-run/L42700000959054591): See no dex2oat
  crashes in the logs, though the test is failing due to another known
  issue (b/270940551)
Change-Id: I63c406b7f4c55247fec858d7b97234e7348a67da
parent ddae51e1
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1942,7 +1942,8 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins
        RUNTIME_NATIVE_BOOT_NAMESPACE,
        ENABLE_JITZYGOTE_IMAGE,
        /*default_value=*/ "");
    bool use_jitzygote_image = jitzygote_flag == "true" || IsBootClassPathProfilingEnable();
    bool compile_without_image = jitzygote_flag == "true" || IsBootClassPathProfilingEnable() ||
            force_compile_without_image();

    // Decide whether to use dex2oat64.
    bool use_dex2oat64 = false;
@@ -1964,7 +1965,7 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins
                      in_dex, in_vdex, dex_metadata, reference_profile, class_loader_context,
                      join_fds(context_input_fds), swap_fd.get(), instruction_set, compiler_filter,
                      debuggable, boot_complete, for_restore, target_sdk_version,
                      enable_hidden_api_checks, generate_compact_dex, use_jitzygote_image,
                      enable_hidden_api_checks, generate_compact_dex, compile_without_image,
                      background_job_compile, compilation_reason);

    bool cancelled = false;
+4 −0
Original line number Diff line number Diff line
@@ -65,6 +65,10 @@ bool create_cache_path(char path[PKG_PATH_MAX], const char *src, const char *ins
    return create_cache_path_default(path, src, instruction_set);
}

bool force_compile_without_image() {
    return false;
}

static bool initialize_globals() {
    return init_globals_from_data_and_root();
}
+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,9 @@ extern bool create_cache_path(char path[PKG_PATH_MAX],
                              const char *src,
                              const char *instruction_set);

// If true, pass "--force-jit-zygote" to dex2oat (i.e., compile without a boot image).
extern bool force_compile_without_image();

}  // namespace installd
}  // namespace android

+5 −0
Original line number Diff line number Diff line
@@ -711,6 +711,11 @@ bool create_cache_path(char path[PKG_PATH_MAX],
    return true;
}

bool force_compile_without_image() {
    // We don't have a boot image anyway. Compile without a boot image.
    return true;
}

static int log_callback(int type, const char *fmt, ...) {
    va_list ap;
    int priority;
+4 −0
Original line number Diff line number Diff line
@@ -67,6 +67,10 @@ bool create_cache_path(char path[PKG_PATH_MAX] ATTRIBUTE_UNUSED,
    return false;
}

bool force_compile_without_image() {
    return false;
}

static void mkdir(const char* path) {
    const std::string fullPath = StringPrintf("/data/local/tmp/user/0/%s", path);
    ::mkdir(fullPath.c_str(), 0755);
Loading